ruby-on-rails - 使用代理的请求被 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的扩展程序使用这些相同的代理设置时,请求会顺利通过并加载页面。
是否有任何原因会阻止我的网络服务器的请求,而不是通过我的浏览器?
我什至使用相同的用户代理进行了测试,并提供了与我的浏览器发送的完全相同的标头。
解决方案
你的情况可能有一些原因。
你能检查代理是否正常工作吗?请在代码中使用您的代理向https://api.ipify.org/发送获取请求。如果它返回正确的 IP 地址,则代理工作。
请禁用在 chrome 设置中运行的 javascript。然后通过代理浏览网站。并检查网站是否正确加载。因为有些网站使用 javascript 渲染 html 和 css。
如果您仍然需要帮助,请随时回复我。
推荐阅读
- git - 本地电脑的文件夹到 github 文件夹?
- laravel - npm 运行构建缺少脚本
- triggers - ST PLC 编程:检测上升沿并记住其值
- java - 单击listview项目android studio后显示fab按钮
- flutter - Flutter:当我抛出异常时,构建器在未来的构建器中调用了两次
- r - 用 r 中的 DataFrame 中的 if-else 替换 NA
- python - 是否可以仅使用 STFT 频谱图的图片来进行声音重建?
- javascript - 如何在按钮单击操作开始之前为 onblur 验证设置超时/间隔以完成?
- javascript - Zabbix 使用 javascript for 循环预处理项目
- python - 我找不到使用 python selenium 输入文本的元素