浏览器打开某个网页返回403,可以尝试一下修改user-agent

在学习爬虫的时候,随机选择了某个网站来练习,却发现浏览器打开网页返回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”前面的勾选,然后在列表中任意选择。刷新网页就可以了。

可以使用Java的URLConnection类来设置User-Agent,并且可以通过随机生成User-Agent来实现随机化。 以下是一个示例代码: ```java import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Random; public class Main { private static final List<String> USER_AGENTS = new ArrayList<>(); static { // 添加一些常见的User-Agent USER_AGENTS.add("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"); USER_AGENTS.add("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586"); USER_AGENTS.add("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246"); } public static void main(String[] args) throws IOException { URL url = new URL("https://www.example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", getRandomUserAgent()); connection.connect(); // 处理响应... } private static String getRandomUserAgent() { Random random = new Random(); int index = random.nextInt(USER_AGENTS.size()); return USER_AGENTS.get(index); } } ``` 在该示例中,我们在静态块中添加了一些常见的User-Agent,然后在获取连接时,随机选择一个User-Agent,并设置到连接的请求头中。这样就可以实现随机化User-Agent了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值