浅浅谈谈如何利用Javase+多线程+计算机网络的知识做一个爬CSDN阅读量总访问量的程序

目录

我们发现csdn的文章

首先为了印证我们的想法

我们用postman往csdn我们任意一篇文章发起post请求

发送请求

​编辑获得响应结果

我们发现我们的阅读量上涨

PostRequestSender类

但是我们经过测试发现

定义一个字符串数组 把URL放进去

然后延迟启动

在线程池里面设置任务的延迟和每次执行的间隔

主方法代码

博客的阅览量也在增长

然而为了防止被网站监测出来

我们可以采取其他策略

比如说往请求体里面塞一个随机数

注意不要写的太复杂 防止电脑卡爆

个人号推广

博客主页

Web后端开发

Web前端开发

数据库开发

项目实战

算法与数据结构

计算机基础

回忆录


我们发现csdn的文章

只要你点进去

就会增长阅读量

结合我们学习的计算机网络相关知识

不难猜测是只要向网页发送post请求

就能获得一次阅读量的增长。

POST请求是HTTP协议中的一种方法,用于向服务器提交数据,通常用于创建或更新资源,或者执行一些操作,比如提交表单数据、上传文件等。在Web开发中,POST请求比GET请求更安全,因为它将数据包含在请求体中,而不是像GET请求一样在URL中可见。

首先为了印证我们的想法

我们用postman往csdn我们任意一篇文章发起post请求

打开postman

发送请求

获得响应结果

我们发现我们的阅读量上涨

证实了我们的想法

我们只要往文章发送请求就行

利用网络编程的知识

我们写个发起请求的类

PostRequestSender类

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Random;public class PostRequestSender {private String url;static long ans=0;public PostRequestSender(String url) {this.url = url;}public void sendPostRequest() throws IOException {// 创建URL对象URL obj = new URL(url);// 打开连接HttpURLConnection con = (HttpURLConnection) obj.openConnection();// 设置请求方法为POSTcon.setRequestMethod("POST");// 设置请求头con.setRequestProperty("User-Agent", "Java client");con.setRequestProperty("Content-Type", "application/json");// 可选:设置请求体Random random=new Random();int randomValue = random.nextInt(1000); // 生成一个0到999的随机整数String postData = "{\"key1\":\"value1\", \"key2\":\"" + randomValue + "\"}";con.setDoOutput(true);try (OutputStream os = con.getOutputStream()) {byte[] input = postData.getBytes(StandardCharsets.UTF_8);os.write(input, 0, input.length);}// 获取响应int responseCode = con.getResponseCode();System.out.println("Sending POST request to URL: " + url);System.out.println("Response Code: " + responseCode);System.out.println("run "+(ans++)+" ...");// 读取响应内容try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8))) {String inputLine;StringBuilder response = new StringBuilder();while ((inputLine = in.readLine()) != null) {response.append(inputLine);}
//            System.out.println("Response Body: " + response.toString());}}
}

但是我们经过测试发现

在同一时间内连续发送多次post请求

只会记录一次阅读量

这说明

CSDN自带有反爬的程序

我们可以规定在1分钟内依次爬取100篇文章

定义一个字符串数组 把URL放进去

然后延迟启动

利用的是多线程的知识

创建线程池

在线程池里面设置任务的延迟和每次执行的间隔

我们遍历数组

主方法代码

import java.io.IOException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;public class Main {public static void main(String[] args) throws Exception {String[] urls = {"https://blog.csdn.net/qq_30500575/article/details/139987333?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139962431?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139962247?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139926411?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139920678?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139920678?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139904327?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139904250?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139841808?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139841808?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139842155?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139857617?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139857996?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139858097?spm=1001.2014.3001.5501"// Add more URLs as needed};// 创建定时执行的线程池ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);// 循环访问多个网址,并每隔20秒执行一次for (String url : urls) {Runnable task = () -> {try {PostRequestSender sender = new PostRequestSender(url);sender.sendPostRequest();} catch (IOException e) {e.printStackTrace();}};// 初始延迟10秒,每隔50秒执行一次任务executor.scheduleAtFixedRate(task, 10, 50, TimeUnit.SECONDS);}// 等待所有任务完成后关闭线程池executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);executor.shutdown();}
}

启动 查看控制台信息

注意联网哦

依次爬取打印

博客的阅览量也在增长

同时还会打印状态码和URL地址

然而为了防止被网站监测出来

我们可以采取其他策略

比如说往请求体里面塞一个随机数

注意不要写的太复杂 防止电脑卡爆

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SaaS架构Client/Server应用的实验室LIS系统源码,服务可拆分,功能易扩展

LIS系统,即实验室(检验科)信息系统,它是医院信息管理的重要组成部分之一,LIS系统采用了智能辅助功能来处理大信息量的检验工作,即LIS系统不仅是自动接收检验数据,打印检验报告,系统保…

Jboss通过未授权/弱口令进入后台上传webshell

目录 Jboss介绍 CVE-2007-1036 漏洞产生的原因 利用原理 访问页面 写入webshell 未授权访问后上传webshell 这一篇学习通过参考大佬的好文章学习Jboss的弱口令/未授权漏洞进入后台Getshell Jboss介绍 JBoss是一个基于J2EE的开放源代码应用服务器,代码遵循L…

《梦醒蝶飞:释放Excel函数与公式的力量》6.2 TIME函数

6.2 TIME函数 1) TIME函数概述 TIME函数是Excel中用于根据指定的小时、分钟和秒返回时间值的内置函数。这个时间值是一个从0(12:00 AM)开始的序列数,其中一天的每个小时等于1/24,每分钟等于1/(24*60),每秒…

【系统架构设计师】六、信息系统基础知识(电子政务|企业信息化|电子商务|信息化战略体系)

目录 一、电子政务EG 1.1 电子政务的内容 1.2 电子政务的主要特征 二、企业信息化EI 2.1 企业信息化实现 2.2 企业信息化方法 三、电子商务EC 四、信息化战略体系 五、客户关系CRM 5.1 CRM的功能 5.2 CRM解决方案具备的要素 5.3 CRM的实现过程 六、供应链管理SCM 七…

Flutter TIM 项目实现

目录 1. 服务端API 1.1 生成签名 1.1.1 步骤 第一步:获取签名算法 第二步:查看函数输入输出 第三步:nodejs 实现功能 1.1.2 验证签名 小结 1.2 Rest API 调用 1.2.1 签名介绍 1.2.2 腾讯接口 生成管理员 administrator 签名 包装一个 post 请求函数 查询账号 …

2734. 执行子串操作后的字典序最小字符串(Rust单百算法)

题目 给你一个仅由小写英文字母组成的字符串 s 。在一步操作中,你可以完成以下行为: 选择 s 的任一非空子字符串,可能是整个字符串,接着将字符串中的每一个字符替换为英文字母表中的前一个字符。例如,‘b’ 用 ‘a’…

华为OD机试 - 石头剪刀布游戏(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

酷开科技丨酷开系统大屏购物 打造沉浸式购物体验

在这个信息化的时代,购物已经不仅仅局限于传统的线下店铺,线上购物逐渐成为了我们生活中重要的一部分。而大屏购物作为线上购物的一种形式,更是凭借其独特的优势和实用的技巧,成为了消费者们的新宠。随着科技的进步和消费者需求的…

lumbda常用操作

文章目录 lumbda的常用操作将List<String>转List<Integer>filter 过滤max 和min将List<Object>转为Map将List<Object>转为Map&#xff08;重复key&#xff09;将List<Object>转为Map&#xff08;指定Map类型&#xff09; lumbda的常用操作 将Li…

读AI新生:破解人机共存密码笔记13有益机器

1. 标准模型 1.1. 我们能控制一个从外太空来的超级智能实体的概率几乎为零 1.2. 随着根据标准模型设计的机器变得更加智能&#xff0c;以及它们的行动范围遍及全球&#xff0c;关闭机器这种方法越来越不可行 1.2.1. 机器将会追求它们自己的目标&#xff0c;无论目标错得多么…

《大道平渊》· 拾伍 —— 为什么做生意的人都欲望比较充足?

《大道平渊》 拾伍 " 欲壑难填&#xff0c;勇往直前。" 为什么做生意的人都欲望比较充足&#xff1f;因为没有人给他们发工资。 在自由市场上&#xff0c;对手渠道、组织运行效率、商业化…… 随时一波小浪&#xff0c;都能把你干下场。 . 我们毕竟不是真正的 食…

eNSP中DHCP的相关命令和配置

一、拓扑图 1.新建拓扑图 2.设置PC端 双击PC1&#xff0c;在基础配置下&#xff0c;将IPv4配置选择”DHCP“&#xff0c;点击“应用”。 PC2、PC3、PC4同样操作。 二、DHCP配置 1.g0/0/0口的配置 在AR1上的命令配置如下&#xff1a; <Huawei>system-view [Huawei]…

.NET 一款支持8种方式维持权限的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

CloudFlare Tunnel实现内网穿透

CloudFlare Tunnel 背景&#xff1a; 家中设备处于内网NAT环境&#xff0c;希望使用CF tunnel构建内网穿透的环境。 有了CF tunnel后&#xff0c;可实现&#xff1a; 家中的NAS可以直接SSH AWS的云服务可迁到到NAS NAT主机借助CF tunnel部署服务 步骤&#xff1a; clou…

数据结构——跳表Skip List

本文对跳表的定义、实现、应用等进行简单总结。 一、 介绍 1.定义 跳表&#xff08;Skip List&#xff09;&#xff1a;是一种概率性数据结构&#xff0c;由William Pugh在1990年提出&#xff0c;主要用于在有序的元素集合上进行快速的搜索、插入和删除操作。跳表的效率与平衡…

英语智汇学习系统

目 录 1 软件概述 1.1 项目研究背景及意义 2 系统相关技术 2.1 HTML、WXSS、JAVASCRIPT技术 2.2 Vanilla框架 2.3 uni-app框架 2.4 MYSQL数据库 3 需求分析 3.1 可行性分析 3.2 功能需求分析 3.3 系统用户及用例分析 3.4 非功能需求分析 3.5 数据流图…

windows USB 设备驱动开发-总章

通用串行总线 (USB) 提供可扩展的即插即用串行接口&#xff0c;确保外围设备的标准、低成本的连接。 USB 设备包括键盘、鼠标、游戏杆、打印机、扫描仪、存储设备、调制解调器、视频会议摄像头等。USB-IF 是一个特别兴趣组 (SIG)&#xff0c;负责维护官方 USB 规范、测试规范和…

如何提高项目风险的处理效率?5个重点

提高项目风险的处理效率&#xff0c;有助于迅速识别和应对风险&#xff0c;减少风险导致的延误&#xff0c;降低成本&#xff0c;提升项目质量&#xff0c;确保项目按时交付。如果项目风险处理效率较低&#xff0c;未能及时发现和处理风险&#xff0c;导致问题累积&#xff0c;…

小米汽车SU7全色系H5自适应展示源码

为了满足广大车迷和潜在消费者对小米汽车SU7全色系的视觉体验需求&#xff0c;我们特别推出了一款基于HTML的自适应H5源码&#xff0c;用于在线展示小米汽车SU7的全色系。这款源码不仅兼容各种设备和屏幕尺寸&#xff0c;而且能够完美地呈现出小米汽车SU7的优雅外观和精致细节。…

【qt】CAD下

目录 一.前言二.缩放1.逻辑2.获取图形项选中的个数3.获取图形项并放大4.视图缩放5.完整代码6.效果展示7.缩小完整代码 三.旋转1.图形项进行旋转2.视图的旋转3.完整代码4.效果展示5.右转代码 四.恢复1.图形项复原2.视图复原3.完整代码4.效果展示 五.前后置1.设置z轴的值2.后置代…