You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python requests库请求HTTP时遇404但浏览器可正常访问的问题

网页抓取遇404但浏览器能正常访问?你可能忽略了这些细节

嘿,我碰到过好多次这种情况!明明浏览器打开好好的,用requests爬就返回404,大概率是你的请求“不像”正常用户的请求,网站把你当爬虫挡了。给你拆解几个最常见的原因:

  • 缺失关键请求头信息
    很多网站会检查请求里的User-Agent字段,requests库默认的User-Agent是类似python-requests/2.31.0的标识,一眼就被网站识别成爬虫了。而浏览器发送的User-Agent是对应浏览器的标识,比如Chrome的Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36。
    你可以给请求加上这个字段试试:

    import requests
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    url_2 = "https://stackoverflow.com/questions/36516183/what-should-i-use-instead-of-urlopen-in-urllib3"
    page_t = requests.get(url_2, headers=headers)
    print(page_t.status_code)  # 现在应该能返回200了
    
  • 需要Cookie验证
    部分网站会依赖Cookie来识别用户会话(比如是否登录、是否是正常访问的用户),浏览器会自动保存网站的Cookie,但requests默认是不带任何Cookie发起请求的,这也会导致网站返回404。你可以通过浏览器开发者工具复制当前的Cookie,加到请求头里,或者用requests.Session()来维持会话获取Cookie。

  • IP或地区限制
    如果你的爬虫IP被网站列入了黑名单,或者网站只允许特定地区的IP访问,也会出现浏览器能打开但爬虫返回404的情况。这种时候可以试试更换代理IP,或者确保你的请求IP和浏览器使用的IP一致。

  • 重定向处理差异
    虽然requests默认会自动处理重定向,但有些网站的重定向逻辑比较特殊,比如需要特定的请求参数或者头信息才能触发正确的重定向,这时候也可能导致返回404。你可以开启allow_redirects=False查看原始响应,看看是否有重定向的线索。

内容的提问来源于stack exchange,提问作者Paul Vannan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:25:32