如何使用OpenURI代理

时间:2017-03-16 08:55:29

标签: 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

我有一个免费代理并使用它并且它有效,所以我认为问题可能在用户名或密码中。

我尝试了从公司向我销售代理列表的用户名和密码。

如果我尝试使用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。它很容易禁止web-scrappers,因此我将为每个请求更改用户代理和代理。

1 个答案:

答案 0 :(得分:0)

我希望您从目标网站获得502

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

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