• 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)”);
    1. /**
    2. * @方法名称: importWeather
    3. * @实现功能: 定时存入实时天气预报 TODO: 方法入参根据页面对象设置
    4. * @create by zyw at 2022-03-19 14:04:31
    5. **/
    6. public void importComment() {
    7. System.out.println("~~~~~~~~定时存入玉龙雪山美团评论~~~~~~~~~~");
    8. HttpURLConnection conn = null;
    9. BufferedReader reader = null;
    10. //使用免费api查询美团评论数据,请求数据时需要提交的参数
    11. Map params = new HashMap();
    12. StringBuilder stringBuilder = new StringBuilder();
    13. try {
    14. //存储返回结果
    15. String strRead = null;
    16. //开始连接
    17. URL url = new URL(requestURL+offset);
    18. conn = (HttpURLConnection) url.openConnection();
    19. conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
    20. //使用Get方式请求数据
    21. conn.setRequestMethod("GET");
    22. conn.connect();
    23. //输入流获取返回数据
    24. InputStream is = conn.getInputStream();
    25. reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
    26. while ((strRead = reader.readLine()) != null) {
    27. stringBuilder.append(strRead);
    28. }
    29. JSONObject jsonObject = JSON.parseObject(stringBuilder.toString());
    30. List MeiTuanlist = JSONObject.parseArray(jsonObject.getJSONArray("comments").toString(), MeiTuanComment.class);
    31. List CommentList = new ArrayList<>();
    32. for (int i = 0; i < MeiTuanlist.size(); i++) {
    33. YlxsPublicOpinionData data = new YlxsPublicOpinionData();
    34. if (MeiTuanlist.get(i).getStar()==50){
    35. //好评
    36. data.setPjFl("好评");
    37. }else if (MeiTuanlist.get(i).getStar()<50&&MeiTuanlist.get(i).getStar()>20){
    38. //中评
    39. data.setPjFl("中评");
    40. }else {
    41. //差评
    42. data.setPjFl("差评");
    43. }
    44. data.setID(UUID.randomUUID().toString().replace("-", "").substring(0, 20));
    45. data.setPjDd("景区");
    46. data.setName("玉龙雪山");
    47. if (MeiTuanlist.get(i).getCommentTime()!=null){
    48. data.setPjTime(new Date(new Long(new Long(MeiTuanlist.get(i).getCommentTime().substring(0,10)) * 1000)));
    49. }
    50. data.setPjUser(MeiTuanlist.get(i).getUserName());
    51. data.setPjContent(removeNonBmpUnicodes(MeiTuanlist.get(i).getComment()));
    52. data.setZancnt(Integer.parseInt(MeiTuanlist.get(i).getZanCnt()));
    53. data.setReadcnt(Integer.parseInt(MeiTuanlist.get(i).getReadCnt()));
    54. data.setQuality("true".equals(MeiTuanlist.get(i).getQuality())?1:0);
    55. data.setAnonymous("true".equals(MeiTuanlist.get(i).getAnonymous())?1:0);
    56. data.setPjSource("美团");
    57. CommentList.add(data);
    58. }
    59. int p = ylxsPublicOpinionDataService.insertYlxsPublicOpinionDataList(CommentList);
    60. } catch (MalformedURLException e) {
    61. e.printStackTrace();
    62. } catch (IOException e) {
    63. e.printStackTrace();
    64. } finally {
    65. if (reader != null) {
    66. try {
    67. reader.close();
    68. } catch (IOException e) {
    69. e.printStackTrace();
    70. }
    71. }
    72. if (conn != null) {
    73. conn.disconnect();
    74. }
    75. }
    76. }
    77. //去除表情
    78. public static String removeNonBmpUnicodes(String s) {
    79. return null == s ? null : s.replaceAll("[^\\u0000-\\uFFFF]", "");
    80. }

  • 相关阅读:
    View Design 全系产品升级至 Vue 3,并发布 View UI Plus 正式版
    git合并错分支还原技巧
    SpringBoot项目jar发布获取jar包所在目录路径
    [交互]接口与路由问题
    算法竞赛入门【码蹄集新手村600题】(MT1260-1280)C语言
    学生HTML个人网页作业作品 (水果商城HTML+CSS)
    电脑技巧:推荐4个冷门且功能非常强大的效率工具
    Nginx Linux ubuntu离线安装部署教程
    NPDP产品经理知识(产品创新种的市场调研)
    安装Jenkins并在ruby中访问
  • 原文地址:https://blog.csdn.net/Zyw907155124/article/details/125885693