使用具有 rails url link 的代理
using a proxy with a rails url link
所以我有一个 nokogiri web scrape 运行在我的本地机器上完美运行。
然而,当我尝试 运行 我的生产环境中的网络抓取时,出现了 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'))
实际上,您可以简单地使用 OpenURI open
方法的 :proxy
参数。
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 被阻止,代理也会发生同样的情况。
所以我有一个 nokogiri web scrape 运行在我的本地机器上完美运行。
然而,当我尝试 运行 我的生产环境中的网络抓取时,出现了 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'))
实际上,您可以简单地使用 OpenURI open
方法的 :proxy
参数。
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 被阻止,代理也会发生同样的情况。