Ruby 如何使用带有OpenURI的代理

Ruby 如何使用带有OpenURI的代理,ruby,proxy,user-agent,open-uri,Ruby,Proxy,User Agent,Open Uri,我正在尝试将OpenURI与代理和用户代理字符串一起使用。我买了代理列表用于我的网络刮板 下面是一个例子: @src = open(url, "User-Agent"=> @agent, :proxy_http_basic_authentication => [ "http://185.118.66.88:16506", "user", "password"]).read 这导致: !!! 502 Bad Gateway 我得到了一个免费的代理,并使用它,它的工作,

我正在尝试将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
我想创建一个类并将其用于web抓取,例如Google。它可以很容易地禁止web报废程序,因此我将更改每个请求的用户代理和代理

我希望你从目标站点获得502


这意味着一切都按预期进行。你尝试使用Nokogiri需要两个右括号才能工作,但是你最好从简单的
open
开始,Nokogiri仍然依赖它。

这不是Nokogiri的问题,因为Nokogiri不在乎HTML来自何方。它只读取OpenURI传递给它的流。问题在于您通过代理和OpenURI连接到最终主机。请阅读“”和链接页面。链接页面将帮助您了解如何处理堆栈溢出。此外,链接页面将帮助您编写更有用的问题。您的代码示例在语法上不正确,也没有显示
rescue
在您的代码中的位置,因此我们无法帮助诊断。您不能编写一个通用刮板来在多个站点上使用。网站之间的HTML不够一致,不允许这样做。谷歌不会被改变代理或用户代理设置所愚弄;他们非常了解自动刮削的工作原理。不要以使现有答案无效的方式更改您的问题。如果你得到了新信息,需要问一个新问题,你应该。。。创建一个新问题。@piet.t好的,我不再更改问题文本。好的,但我们先讨论打开url。第二。你能和用户代理和代理分享Nokogiri的工作示例吗(如果代理会要求用户名和密码,但没有好的密码,效果会更好)?
require 'open-uri'
@src = open("http://google.com",
            "User-Agent"=> 'Agent',
            proxy_http_basic_authentication: [
              "http://185.118.66.88:16506", "user", "password"]).read

#⇒ OpenURI::HTTPError: 407 Proxy Authentication Required