这是一个非常简单的模块,它会不断检查请求者的 IP。我使用反向连接代理,这意味着它会在每个 http 请求上获得新的 IP。
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