Python Requests访问Jiomart.com本地返回200,部署至Digital Ocean服务器后返回404问题求助
解决Jiomart.com在Digital Ocean服务器上返回404的问题
我之前也碰到过类似的情况,大概率是Jiomart的反爬机制针对云服务商IP做了限制——很多电商平台会把Digital Ocean这类云主机的IP段加入黑名单,防止批量爬虫请求,这就导致本地能正常访问,但部署到云服务器后直接返回404。
给你几个排查和解决的方向:
统一请求头,模拟浏览器访问
本地环境的请求头(比如User-Agent)和服务器上默认的Requests请求头可能差异很大,Jiomart可能通过这个识别出你是服务器端的爬虫请求。手动设置一个常见浏览器的User-Agent试试:site = requests.Session() headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', 'Accept-Language': 'en-US,en;q=0.9' } res = site.get('https://www.jiomart.com/', headers=headers) print(res.status_code)验证服务器IP是否被封禁
在Digital Ocean服务器上用curl命令直接测试,看看返回的响应头和内容:curl -v https://www.jiomart.com/如果返回的还是404,并且响应内容里有类似“访问被拒绝”的提示,那基本可以确定是IP被Jiomart拉黑了。
尝试使用代理IP
如果IP确实被封,可以找个可靠的代理IP(比如付费的住宅代理),在Requests里配置代理:proxies = { 'http': 'http://your-proxy-address:port', 'https': 'https://your-proxy-address:port' } res = site.get('https://www.jiomart.com/', headers=headers, proxies=proxies)检查DNS解析是否正常
有时候服务器的DNS解析可能指向了错误的节点,导致访问失败。你可以在服务器上执行ping www.jiomart.com,对比本地ping的结果,如果IP不一致,尝试更换DNS服务器(比如改成Google的8.8.8.8):echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
如果以上方法都无效,还可以试试联系Digital Ocean客服更换服务器IP,或者用Cloudflare Tunnel这类工具转发请求,伪装你的真实服务器IP。
内容的提问来源于stack exchange,提问作者AdnanKattekaden
相关产品推荐
相关产品推荐

