首页 > 解决方案 > 使用代理的请求被 Web 服务器阻止但浏览器没有

问题描述

我正在尝试使用httparty向具有代理的网站发出请求,如下所示:

def self.fetch_page_with_html_response(url, proxy_id)

    proxy = Proxy.find(proxy_id)

    request_options = {
        http_proxyaddr: proxy.url, http_proxyport: proxy.port, http_proxyuser: proxy.username, http_proxypass: proxy.password,
        headers: {"User-Agent" => proxy.user_agent}
    }

    response = HTTParty.get(url, request_options)

    response
end

在某些网站上,我的请求要么挂起,要么返回一个错误页面,该网站阻止我获取该页面。

当我在我的 Chrome 浏览器中使用类似SwitchyOmega的扩展程序使用这些相同的代理设置时,请求会顺利通过并加载页面。

是否有任何原因会阻止我的网络服务器的请求,而不是通过我的浏览器?

我什至使用相同的用户代理进行了测试,并提供了与我的浏览器发送的完全相同的标头。

标签: ruby-on-railsrubyproxyhttparty

解决方案


你的情况可能有一些原因。

  1. 你能检查代理是否正常工作吗?请在代码中使用您的代理向https://api.ipify.org/发送获取请求。如果它返回正确的 IP 地址,则代理工作。

  2. 请禁用在 chrome 设置中运行的 javascript。然后通过代理浏览网站。并检查网站是否正确加载。因为有些网站使用 javascript 渲染 html 和 css。

如果您仍然需要帮助,请随时回复我。


推荐阅读