用户代理及 java.io.IOException: Server returned HTTP response code: 403 for URL

本文深入探讨了在遇到服务器禁止抓取或需要权限访问的网页时,如何利用Java编程语言通过伪装User-Agent来实现网页内容的抓取。详细介绍了User-Agent的概念及其在绕过网站检测方面的作用,提供了具体的代码示例,帮助开发者解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当你使用java程序检索其他网站上的内容时,如果其服务器设置了禁止抓取,或者其访问需要权限,

如果此时你去检索网页那么就会有异常该异常出现.

如果是服务器需要访问权限,比如说你要登录才能访问的网页,那么你抓取不了的.

如果是服务器端禁止抓取,那么这个你可以通过设置User-Agent来欺骗服务器

connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");


什么是User Agent呢?

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。  

一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测。


	public String getContent(String url1) {
		BufferedReader in = null;
		StringBuffer sb = null;
		try {
			URL url = new URL(url1);
			// in = new BufferedReader(new InputStreamReader(url.openStream()));
			/** 修改 ****************/
			URLConnection conn = url.openConnection();
			conn.setRequestProperty("User-Agent",
					"Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
			in = new BufferedReader(
					new InputStreamReader(conn.getInputStream()));
			/*********************/
			String line;
			sb = new StringBuffer();
			while ((line = in.readLine()) != null) {
				sb.append(line);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
			log.error("HTTP Connection 读取接口数据时出错:" + ex.getMessage());
			return "-2";
		} finally {
			if (null != in) {
				try {
					in.close();
				} catch (IOException ex1) {
				}
			}
		}
		return sb.toString();
	}
注:每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值