java.io.IOException: Server returned HTTP response code: 403 for URL

  • Post author:
  • Post category:java


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