Scrapy-Splash 与 Tor

Scrapy-Splash with Tor

我已经成功 运行 使用这个 link 的 Tor Scrapy: http://pkmishra.github.io/blog/2013/03/18/how-to-run-scrapy-with-TOR-and-multiple-browser-agents-part-1-mac/

但我无法 运行 使用 Tor。

在 Scrapy-settings.py 我指向 polipo for http_proxy(8123 是 polipo 端口):

HTTP_PROXY = 'http://127.0.0.1:8123'

在polipo.config中,我指向tor(9150是tor端口):

socksParentProxy = localhost:9150

diskCacheRoot=""

这非常适合 scrapy。在启动时它不起作用。但我不得不说 splash 或 docker 将 polipo 用于 http_proxy,就像在 scrapy-settings.py 中一样。 Docker 应该以某种方式使用 polipo,并且 polipo 将指向 tor。我该怎么做?

我 运行 飞溅:

sudo docker run -p 5023:5023 -p 8050:8050 -p 80511 scrapinghub/splash

并且在 etc/default/docker 我试过 docker 应该用这个直接到 polipo:

export http_proxy='http://127.0.0.1:8123'
Environment="http_proxy=http://127.0.0.1:8123"

但是我没能成功。我究竟做错了什么?谢谢:)

你需要

  1. 使 Tor 可从 Splash Docker 容器访问;
  2. 告诉 Splash 使用这个 Tor 代理。

对于 (2),您可以使用 Splash proxy profiles or set proxy directly, either in proxy argument, or using request:set_proxy in splash:on_request 回调和 Lua 脚本。例如,如果 Tor 可以从 Splash Docker 容器作为 tor:8123 访问,您可以执行这样的请求:

http://<splash-url>:8050/render.html?url=...&proxy=socks5://tor:8123

另外,看看 https://github.com/TeamHG-Memex/aquarium - 它设置了所有这些 - 它设置了 'tor' 代理配置文件,在另一个 Docker 容器中启动 Tor,并链接这些容器。要在通过 Aquarium 部署的 Splash 中使用 Tor 访问远程网站,您只需向请求添加 proxy=tor GET 参数:

http://<splash-url>:8050/render.html?url=...&proxy=tor