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

1、403状态码

403 Forbidden 是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站。

2、引发的异常报错

 3、BUG原因

  • 1.你的IP被列入黑名单
  • 2.你在一定时间内过多地访问此网站(一般是用采集程序),被防火墙拒绝访问了
  • 3.网站域名解析到了空间,但空间未绑定此域名
  • 4.你的网页脚本文件在当前目录下没有执行权限
  • 5.在不允许写/创建文件的目录中执行了创建/写文件操作
  • 6.以http方式访问需要ssl连接的网址
  • 7.浏览器不支持SSL 128时访问SSL 128的连接
  • 8.在身份验证的过程中输入了错误的密码
  • 9.DNS解析错误,手动更改DNS服务器地址
  • 10.连接的用户过多,可以过后再试
  • 11.服务器繁忙,同一IP地址发送请求过多,遭到服务器智能屏蔽
  • 12.CC强力防护

 4、解决方式

  • 当你使用java程序检索其他网站上的内容时,如果其服务器设置了禁止抓取,或者其访问需要权限,
  • 如果此时你去检索网页那么就会有异常该异常出现.
  • 如果是服务器需要访问权限,比如说你要登录才能访问的网页,那么你抓取不了的.
  • 如果是服务器端禁止抓取,那么这个你可以通过设置User-Agent来欺骗服务器
  • connection.setRequestProperty(“User-Agent”, “Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)”);
    /**
     * @方法名称: importWeather
     * @实现功能: 定时存入实时天气预报 TODO: 方法入参根据页面对象设置
     * @create by zyw at 2022-03-19 14:04:31
     **/
    public void importComment() {
            System.out.println("~~~~~~~~定时存入玉龙雪山美团评论~~~~~~~~~~");
        HttpURLConnection conn = null;
        BufferedReader reader = null;
//使用免费api查询美团评论数据,请求数据时需要提交的参数
        Map<String, String> params = new HashMap();
        StringBuilder stringBuilder = new StringBuilder();

        try {
            //存储返回结果
            String strRead = null;
            //开始连接
            URL url = new URL(requestURL+offset);

            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
            //使用Get方式请求数据
            conn.setRequestMethod("GET");
            conn.connect();
            //输入流获取返回数据
            InputStream is = conn.getInputStream();
            reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));

            while ((strRead = reader.readLine()) != null) {
                stringBuilder.append(strRead);
            }
            JSONObject jsonObject = JSON.parseObject(stringBuilder.toString());
            List<MeiTuanComment> MeiTuanlist = JSONObject.parseArray(jsonObject.getJSONArray("comments").toString(), MeiTuanComment.class);

            List<YlxsPublicOpinionData> CommentList = new ArrayList<>();
            for (int i = 0; i < MeiTuanlist.size(); i++) {
                YlxsPublicOpinionData data = new YlxsPublicOpinionData();
                if (MeiTuanlist.get(i).getStar()==50){
                    //好评
                    data.setPjFl("好评");
                }else if (MeiTuanlist.get(i).getStar()<50&&MeiTuanlist.get(i).getStar()>20){
                    //中评
                    data.setPjFl("中评");
                }else {
                    //差评
                    data.setPjFl("差评");
                }
                data.setID(UUID.randomUUID().toString().replace("-", "").substring(0, 20));
                data.setPjDd("景区");
                data.setName("玉龙雪山");
                if (MeiTuanlist.get(i).getCommentTime()!=null){
                    data.setPjTime(new Date(new Long(new Long(MeiTuanlist.get(i).getCommentTime().substring(0,10)) * 1000)));
                }
                data.setPjUser(MeiTuanlist.get(i).getUserName());
                data.setPjContent(removeNonBmpUnicodes(MeiTuanlist.get(i).getComment()));
                data.setZancnt(Integer.parseInt(MeiTuanlist.get(i).getZanCnt()));
                data.setReadcnt(Integer.parseInt(MeiTuanlist.get(i).getReadCnt()));
                data.setQuality("true".equals(MeiTuanlist.get(i).getQuality())?1:0);
                data.setAnonymous("true".equals(MeiTuanlist.get(i).getAnonymous())?1:0);
                data.setPjSource("美团");
                CommentList.add(data);
            }
            int p = ylxsPublicOpinionDataService.insertYlxsPublicOpinionDataList(CommentList);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                conn.disconnect();
            }
        }
    }

    //去除表情
    public static String removeNonBmpUnicodes(String s) {
        return null == s ? null : s.replaceAll("[^\\u0000-\\uFFFF]", "");
    }

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用\[1\]: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 。 引用\[2\]: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呢? 。 引用\[3\]: 今天在做数据迁移时,项目旧数据迁移至新数据仓库中,有网络资源下载 重传的需求,于是在整理的过程中,出现了上述问题,java.io.IOException: Server returned HTTP response code: 400 for URL。 。 问题:java.io.IOException: Server returned HTTP response code: 403 for URL: https://restpack.io/api/html2pdf/v6/convert 回答: 在这个问题中,java.io.IOException: Server returned HTTP response code: 403 for URL: https://restpack.io/api/html2pdf/v6/convert 表示在访问指定URL时,服务器返回了403错误代码,这意味着访问被拒绝。\[1\] User-Agent是HTTP请求头的一部分,用于标识客户端(通常是浏览器)的软件和版本信息。在引用\[2\]中的代码中,通过设置User-Agent为"Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)",模拟了一个兼容IE 5.0的浏览器。这样做的目的是为了绕过一些网站的访问限制,因为有些网站会根据User-Agent来判断是否允许访问。\[2\]而在引用\[3\]中的问题中,出现了java.io.IOException: Server returned HTTP response code: 400 for URL,这表示服务器返回了400错误代码,通常表示请求无效。 #### 引用[.reference_title] - *1* *2* [java.io.IOException: Server returned HTTP response code: 403 for URL](https://blog.csdn.net/beiluoL/article/details/106024359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [java.io.IOException: Server returned HTTP response code: 400 for URL 问题定位与解决](https://blog.csdn.net/LS7011846/article/details/84074946)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚几哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值