在学习爬虫的时候,随机选择了某个网站来练习,却发现浏览器打开网页返回403(macOS Mojave 10.14.6系统,Chrome77.0.3865.90(正式版本))。尝试换了浏览器都不行,但在另一台电脑上是没有问题的。
网上查到关于解决403forbidden的不少帖子,尝试了一些都无法解决问题。后来在vscode写了几行python代码试验了一下。
url = '出现问题的网页网址'
headers= {'user-agent':'……'}
res = requests.get(url,headers=headers)
print(res.status_code)
发现如果不写headers,或者user-agent写本机的,就会返回403。但如果随便在网上搜一个常见的user-agent写进去,status_code返回的就是200。
针对以上发现,估计是因为该网站强校验某些请求头(至于为什么这样限制实在不清楚,发现这个问题,可以算得上是极个别事件。此处解决方案只适合这个特殊情况,记录一下。)
chrome浏览器:右键“检查”——右上角按钮(三个竖排圆点)“more tools”——“Network conditions”
User agent一项去除“select automatically”前面的勾选,然后在列表中任意选择。刷新网页就可以了。