代码之家  ›  专栏  ›  技术社区  ›  sam.roberts55

使用带有rails-url链接的代理

  •  0
  • sam.roberts55  · 技术社区  · 8 年前

    所以我有一个nokogiri网络刮擦在我的本地机器上运行得很好。

    然而,当我尝试在我的生产环境中运行Webscrape时,它会显示403错误代码。

    我认为这是由于网站阻止了我的服务器ip(可能是因为以前使用该ip的人已经阻止了它)

    是否可以通过代理服务器从我的web服务器路由nokogiri请求?如果是这样,我该怎么办?

    这是我现在的密码。

    doc = Nokogiri::HTML(open(URL HERE, 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.854.0 Safari/535.2'))
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   the Tin Man Bryan    8 年前

    实际上,您可以简单地使用 :proxy OpenURI的参数 open 方法

    open(*rest, &block)
    #open provides `open' for URI::HTTP and URI::FTP.
    
    ...
    
    The hash may include other options, where keys are symbols:
    :proxy
    
    Synopsis:    
    :proxy => "http://proxy.foo.com:8000/"
    :proxy => URI.parse("http://proxy.foo.com:8000/")
    
    If :proxy option is specified, the value should be String, URI, boolean or nil.
    

    此外,作为一般考虑因素(现在很乏味),您应该围绕废弃内容寻找替代方案,特别是如果是定期进行的话。支持的API或替代源。如果您当前的服务器IP被阻止,代理也会发生同样的情况。