【发布时间】:2017-03-16 08:55:29
【问题描述】:
我正在尝试将 OpenURI 与代理和用户代理字符串一起使用。我购买了代理列表以用于我的网络爬虫。
这是一个例子:
@src = open(url, "User-Agent"=> @agent,
:proxy_http_basic_authentication => [
"http://185.118.66.88:16506", "user", "password"]).read
导致:
!!! 502 Bad Gateway
我有一个免费的代理并使用它并且它工作正常,所以我认为问题可能出在用户名或密码上。
我尝试了从向我出售代理列表的公司获得的用户名和密码。
如果我尝试使用 Nokogiri,我会收到错误:
@src = Nokogiri::HTML(open(
"http://google.com",
:proxy_http_basic_authentication => [
"http://#{@proxy}", "user", "password"]
syntax error, unexpected keyword_rescue, expecting ')'
rescue Exception => e
我想创建一个类并将其用于网络抓取,例如 Google。它很容易禁止网络抓取工具,因此我将为每个请求更改用户代理和代理。
【问题讨论】:
-
这不是 Nokogiri 问题,因为 Nokogiri 并不关心 HTML 来自何处。它只读取 OpenURI 传递给它的流。问题在于您通过代理和 OpenURI 连接到终端主机。
-
请阅读“How to Ask”和链接页面。链接页面将帮助您了解如何使用 Stack Overflow。此外,“minimal reproducible example”和链接页面将帮助您编写更有用的问题。您的代码示例在语法上不正确,也没有显示
rescue在您的代码中的位置,因此我们无法帮助诊断。 -
你不能编写一个通用的刮板来在多个网站上使用。网站之间的 HTML 不够一致,无法做到这一点。 Google 不会被更改代理或用户代理设置所欺骗;他们非常了解自动抓取的工作原理。
-
不要以使现有答案无效的方式更改您的问题。如果您获得新信息并需要提出新问题,您应该......好吧......创建一个新问题。
-
@piet.t 好的,我不会再更改问题文本了。
标签: ruby proxy user-agent open-uri