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

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

posted @ 2020-05-09 17:39  我有满天星辰  阅读(189)  评论(0编辑  收藏  举报