Может ли Hackney подключаться к нескольким цепям SOCKS5 одновременно?

Я использую Hackney в проекте Elixir, где я пытаюсь подключиться к нескольким цепям Tor одновременно через SOCKS5 . Я делаю этот запрос на сайт, который просто возвращает IP-адрес в теле ответа и ничего больше.

Проблема в том, что когда я делаю запрос через один из процессов Tor, а затем немедленно другой через другой процесс Tor, я получаю тот же IP-адрес (так что почти всегда оба запроса проходят через один и тот же канал) .

 > {:ok, status, headers, c1} = :hackney.request(:get ,url, [], "", [{:proxy, {:socks5, :localhost, 9062}}])
 > :hackney.body(c1) 
 {:ok, "one.ip.add.ress\n"}
 > {:ok, status, headers, c2} = :hackney.request(:get ,url, [], "", [{:proxy, {:socks5, :localhost, 9063}}])
 > :hackney.body(c2) 
 {:ok, "one.ip.add.ress\n"}

Если я жду около 1 минуты и сначала делаю тот же запрос с другим процессом, я получаю его IP для обоих:

 > {:ok, status, headers, c2} = :hackney.request(:get ,url, [], "", [{:proxy, {:socks5, :localhost, 9063}}])
 > :hackney.body(c2)     
 {:ok, "two.ip.add.ress\n"}
 > {:ok, status, headers, c1} = :hackney.request(:get ,url, [], "", [{:proxy, {:socks5, :localhost, 9062}}])
 > :hackney.body(c1)          
 {:ok, "two.ip.add.ress\n"}

и если я подожду еще 1 минуту или около того, я снова получу IP первого для обоих.

 > {:ok, status, headers, c1} = :hackney.request(:get ,url, [], "", [{:proxy, {:socks5, :localhost, 9062}}])
 > :hackney.body(c1)        
 {:ok, "one.ip.add.ress\n"}
 > {:ok, status, headers, c2} = :hackney.request(:get ,url, [], "", [{:proxy, {:socks5, :localhost, 9063}}])
 > :hackney.body(c2)         
 {:ok, "one.ip.add.ress\n"}

Если я буду ждать более длительного периода изменения обоих IP-адресов, но снова. Если я сделаю запрос через оба процесса в течение короткого промежутка времени, я получу один и тот же IP-адрес для обоих (IP-адрес первого процесса TOR, который я использовал):

 > {:ok, status, headers, c1} = :hackney.request(:get ,url, [], "", [{:proxy, {:socks5, :localhost, 9062}}])
 > :hackney.body(c1)        
 {:ok, "new.ip.add.ress\n"}
 > {:ok, status, headers, c2} = :hackney.request(:get ,url, [], "", [{:proxy, {:socks5, :localhost, 9063}}])
 > :hackney.body(c2)         
 {:ok, "new.ip.add.ress\n"}

Есть ли способ избежать этого в Хакни?


person Razvan El    schedule 13.02.2016    source источник


Ответы (1)


Убедитесь, что вы запускаете несколько экземпляров Tor с разными каталогами данных (параметр _ 1_).

person Mihai Târnovan    schedule 18.11.2016