【问题标题】:Splash with Privoxy/Tor do not work (localhost conflict?)使用 Privoxy/Tor 的飞溅不起作用(本地主机冲突?)
【发布时间】:2017-08-24 14:06:20
【问题描述】:

Splash 不适用于 Privoxy/Tor。虽然

  • Privoxy/Tor 在浏览器中工作。
  • Splash 可与普通代理一起使用。 yield SplashRequest(url, self.parse_func, args={'wait': 2.5, 'proxy': 'http://a_proxy_address:port', })
  • 没有 Splash 的 Scrapy 通过 Privoxy 工作。 yield scrapy.Request(url, callback=self.parse_func, meta={'proxy': 'http://127.0.0.1:8118'}))。

在脚本 Splash 中给出错误 502。

如果尝试在浏览器中打开 Splash 页面localhost:8050,它会给出错误页面: Privoxy was unable to socks5t-forward your request http://localhost:8050/ through localhost: SOCKS5 request failed

/etc/privoxy/config:

forward-socks5 / localhost:9050 .
forward-socks4 / localhost:9050 .
forward-socks4a / localhost:9050 .
forward-socks5t / localhost:9050 .

我也尝试在以下行中添加/etc/privoxy/config,但没有帮助。

forward localhost  .

【问题讨论】:

  • 你在 docker 里面运行 splash 吗?
  • 是的,sudo docker run -p 8050:8050 scrapinghub/splash

标签: scrapy tor splash-screen scrapy-splash privoxy


【解决方案1】:

您的问题是您正在使用 splash 并将其传递给 localhost 代理。当 splash 尝试使用 127.0.0.1:8118 时,这指的是 splash 容器本身,并且没有任何东西在其中运行。所以它失败了。

两种可能的解决方案

在主机网络上运行启动

sudo docker run --net host scrapinghub/splash

给代理IP

如果您的笔记本电脑/PC 有来自路由器的192.168.0.101 IP,请使用

yield SplashRequest(url,
self.parse_func, args={'wait': 2.5, 'proxy':
'http://192.168.0.101:8118', })

【讨论】:

  • 1) 有效,如果还在请求中添加'proxy': 'http://127.0.0.1:8118'。谢谢!但是在这种方式下,Tor 不能在 localhost:8050 上的浏览​​器中使用 Splash。
  • SplashRequest 使用的代理 IP 是什么?
  • 我试过'proxy': 'http://127.0.0.1:8118''proxy': 'http://192.168.1.102:8118'(我的电脑的IP),
  • 你看到了什么问题?
  • 如果在没有 Splash 的情况下运行 scrapy.Request(url, callback=self.parse_func, meta={'proxy': 'http://192.168.1.102:8118'}) 错误:twisted.internet.error.ConnectionRefusedError: Connection was refused by other side: 111: Connection refused.(但如果设置了 'proxy': 'http://127.0.0.1:8118',则代理可以工作。)
猜你喜欢
  • 2013-08-12
  • 2012-06-01
  • 1970-01-01
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
相关资源
最近更新 更多