403 Forbidden 是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站。
引发的BUG:
java.io.IOException: Server returned HTTP response code: 403 for URL: http://img4.imgtn.bdimg.com/it/u=2718497102,228936332&fm=26&gp=0.jpg
主要原因分析
1.你的IP被列入黑名单
2.你在一定时间内过多地访问此网站(一般是用采集程序),被防火墙拒绝访问了
3.网站域名解析到了空间,但空间未绑定此域名
4.你的网页脚本文件在当前目录下没有执行权限
5.在不允许写/创建文件的目录中执行了创建/写文件操作
6.以http方式访问需要ssl连接的网址
7.浏览器不支持SSL 128时访问SSL 128的连接
8.在身份验证的过程中输入了错误的密码
9.DNS解析错误,手动更改DNS服务器地址
10.连接的用户过多,可以过后再试
11.服务器繁忙,同一IP地址发送请求过多,遭到服务器智能屏蔽
12.CC强力防护
解决方式
当你使用java程序检索其他网站上的内容时,如果其服务器设置了禁止抓取,或者其访问需要权限,
如果此时你去检索网页那么就会有异常该异常出现.
如果是服务器需要访问权限,比如说你要登录才能访问的网页,那么你抓取不了的.
如果是服务器端禁止抓取,那么这个你可以通过设置User-Agent来欺骗服务器
connection.setRequestProperty(“User-Agent”, “Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)”);
class WebDownloader { public void downloader(String link, String name) { try { URL url = new URL(link); url.openConnection().setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); FileUtils.copyURLToFile(url, new File(name)); } catch (IOException e) { e.printStackTrace(); System.out.println("IO异常,downloader方法出现问题"); } }
什么是User Agent呢?
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测。
参考博客:https://blog.csdn.net/testcs_dn/article/details/78933044
参考博客:https://blog.csdn.net/zhaoshl_368/article/details/6603498
原文链接:https://www.cnblogs.com/beiluoL/p/16997149.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/20927