Я использую 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"}
Есть ли способ избежать этого в Хакни?