Это очень простой модуль, который постоянно проверяет IP-адрес запрашивающей стороны. Я использую прокси-серверы обратного соединения, что означает, что он получает новый IP-адрес при каждом запросе http.
defmodule Test do
def go() do
Enum.each(1..1, fn x ->
Task.Supervisor.async_nolink(Scraper.TaskSupervisor, fn ->
r = HTTPoison.get("https://api.ipify.org?format=json", [],
[timeout: 10_000, recv_timeout: 10_000, proxy: "ip:port", ssl: [{:versions, [:'tlsv1.2']}]])
case r do
{:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
IO.inspect body |> Jason.decode
:timer.sleep(1000)
go()
end
end)
end)
end
end
Test.go()
:timer.sleep(2000000)
Проблема? HTTPoison (hackney) не освобождает соединение, пока процесс активен, поэтому IP всегда одинаков.
Как бы я вручную закрыл соединение внутри:
{:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
IO.inspect body |> Jason.decode