博客自动增加阅读量

article/2025/11/9 2:40:24

博客自动增加阅读量

  • 目的
    • 步骤
    • 准备条件
    • 编写基础类
    • 注意
    • 解决
    • 后续

目的

用HttpClient包进行Get请求,从而增加博客的阅读量

步骤

1 拿到所有博客的URL:
我们的博客都是
https://blog.csdn.net/用户ID/article/details/ 文章ID(8位)
用户ID很好拿,而所有文章ID可以通过列表的方式查找:
在这里插入图片描述
我们可以通过GET请求拿到这一页的HTML,然后遍历查找出以
https://blog.csdn.net/用户ID/article/details/ 开头的所有URL

准备条件

pom.xml :

       <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--http工具包,模拟Get,Post等请求--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId></dependency><!--fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.46</version></dependency>

编写基础类

public class HttpUtils {private static final RequestConfig defaultConfig;// 获取返回的cookie(访问Url前塞进HttpClient)private static  BasicCookieStore cookieStore = new BasicCookieStore();static {// 设置超时时间等配置defaultConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(10000).setConnectionRequestTimeout(10000).build();}/*** 获取client** @return*/public static CloseableHttpClient getClient() {// 采用默认方式获取client,默认方式会通过连接池建立连接,并且设置CooikeCloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).build();return client;}/*** http post请求,json格式传输参数** @param map 参数对* @param url url地址* @return*/public static String postWithHttp(Map<String, Object> map, String url) {HttpPost httpPost = new HttpPost(url);httpPost.setConfig(defaultConfig);StringEntity stringEntity = new StringEntity(JSON.toJSONString(map), Consts.UTF_8);stringEntity.setContentEncoding("UTF-8");stringEntity.setContentType("application/json");httpPost.setEntity(stringEntity);return execute(httpPost);}/*** 执行请求并响应** @param httpPost httpPost* @return 结果流字符串*/public static String getWithHttp( String url) {HttpGet httpGet = new HttpGet(url);httpGet.setConfig(defaultConfig);return execute(httpGet);}private static String execute(HttpRequestBase httpPost) {if (httpPost == null) {return "";}try {CloseableHttpResponse response = getClient().execute(httpPost);if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
//                 打印cookieList<Cookie> cookies = cookieStore.getCookies();if (cookies.isEmpty()) {System.out.println("Cookie is None");} else {for (int i = 0; i < cookies.size(); i++) {System.out.println("- " + cookies.get(i).toString());}}HttpEntity resEntity = response.getEntity();return EntityUtils.toString(resEntity);}} catch (Exception e) {e.printStackTrace();log.error("请求出错,", e);}return "";}}

// Springboot启动后运行

@Component
@Slf4j
public class ApplicationRunnerImpl implements ApplicationRunner {@Overridepublic void run(ApplicationArguments args) throws Exception {// 解决需要登陆的情况//        Map<String,Object> map = new HashMap<>();
//        map.put("loginType","1");
//        map.put("pwdOrVerifyCode","xxx");
//        map.put("userIdentification","xxx");
//        System.out.println(HttpUtils.postWithHttp(map, "https://passport.csdn.net/v1/register/pc/login/doLogin"));int count = 0 ;List<String> urls = new ArrayList<>();// 几个文章列表List<String> listurl = new ArrayList<>();listurl.add("https://blog.csdn.net/qq_35720307/article/list/1");listurl.add("https://blog.csdn.net/qq_35720307/article/list/2");listurl.add("https://blog.csdn.net/qq_35720307/article/list/3");// 拿到每个列表页面的所有博客URLfor (String s : listurl) {String content = HttpUtils.getWithHttp(s);System.out.println(content);int start = 0;int end = 0;String searchKey = "https://blog.csdn.net/qq_35720307/article/details/";while (content.indexOf(searchKey, start) != -1) {start = content.indexOf(searchKey, start);end = start + searchKey.length() + 8;String url = content.substring(start, end);urls.add(url);start = end;}}// 启动几个线程跑  ExecutorService threadPool = Executors.newFixedThreadPool(5);while (true) {try {urls.forEach(url -> {threadPool.execute(() -> {HttpUtils.getWithHttp(url);});});log.info("循环次数"+ ++count);Thread.sleep(40000);} catch (InterruptedException e) {log.error("error message :", e);}}}
}	

注意

问题一:同一个IP下,一分钟内,一篇文章点击多次只会增加一次阅读量
问题二:大概1个多小时后,这个IP将会被屏蔽,该IP访问任何博客都一定会跳到登录页

解决

问题一 这个我们设置一分钟左右读取一次
问题二 所有请求我们带上登陆的所有Cookie

登陆的URL,是个POST请求,URL是
https://passport.csdn.net/v1/register/pc/login/doLogin
需要传参的格式是JSON:
{
“loginType”:“1”,
“pwdOrVerifyCode”:“你的账户密码”,
“userIdentification”:“你的账户用户名”
}
具体代码在上面注释里面,先请求后,Cookie会在每次访问URL时都会带上

后续

怎么拿到这个URL:F12后,用正确的用户名和错误的密码登陆,这个请求URL将会出来,如果是正确的密码,将会自动跳转,找不着这个POST请求了

CSDN的防护:每次登陆,有一个GET请求先验证用户名和密码,正确就会去请求真正的POST登陆,错误三次左右就会出现验证码,完成验证码才会请求真正的POST登陆

具体项目Git地址:https://github.com/TomZhangY/blogAddRead


http://chatgpt.dhexx.cn/article/qOebPAkm.shtml

相关文章

实现自动阅读的功能

var start document.getElementsByTagName(div)[0]; var stop document.getElementsByTagName(div)[1]; var speed document.getElementsByTagName(div)[2]; var timer 0; var num 10; //多次点击start按钮会产生多个定时器&#xff08;加锁——操作系统学过&#xff09; …

PDF如何自动滚动阅读

PDF如何自动滚动阅读 视图---页面显示---自动滚动 快捷键 Ctrl shiftH

html 自动阅读,自动阅读软件脚本

自动阅读软件脚本是一款非常实用的帮助大家可以自动阅读挂机的软件&#xff0c;生活中多种场景下都可以使用这款软件快速完成任务&#xff0c;自动阅读、自动点赞评论以及刷视频等等的功能一应俱全&#xff0c;支持多个平台上的自阅服务满足大家的需求&#xff0c;想要了解这款…

自动阅读教程--五条app

下面介绍实现五条自动阅读的步骤。&#xff08;只介绍android手机的情况&#xff09; 一、手机连接电脑 首先用usb线将手机连接到电脑上&#xff0c;然后开始菜单中&#xff0c;cmd打开控制台&#xff0c;输入adb devices&#xff0c;会出现如下页面&#xff1a; 这是要记住…

【新】CSDN文章一键打印、输出PDF(自动阅读全文、全清爽模式)

版权声明&#xff1a;本文为丨匿名用户丨原创文章&#xff0c;转载请注明出处&#xff1a;【新】CSDN文章一键打印、输出PDF&#xff08;自动阅读全文、全清爽模式&#xff09;_丨晋丨-CSDN博客_csdn打印https://blog.csdn.net/p1279030826/article/details/106602341 该方法在…

自动阅读专业版

APK链接&#xff1a;https://pan.baidu.com/s/1TH52xDhDS0GX7fOnwh9Ghw 提取码&#xff1a;tpkr 专业版可以自动阅读&#xff1a; "微视", "快音", "快7浏览器", "天天爱清理", "趣铃声", "火火视频极速版", &q…

最近网络上很多都在聊自动阅读,今天我们好好说说自动阅读到底怎么样

一、首先要先看自身适不适合做阅读。 能不能做首先要先看你手上有没有资源,什么资源?人!为什么这么说?真正想做阅读的人,他首先碰到最棘手的事就是,我想搞100台机子,一台机子就要1个微信,那我就要准备100个微信可以给我用,这么多,天呐,要哪里来?还有流量问题要怎么…

自动阅读是骗人的吗?新手一定要看,避免入坑

从17年开始&#xff0c;市面上陆陆续续出现了自动阅读工作室&#xff0c;他们又是靠什么赚钱呢&#xff1f;自动阅读真的可以赚钱吗&#xff1f;一天能赚多少呢&#xff1f;做自动阅读违法吗&#xff1f;这些以为估计是很多人会考虑的&#xff01; 首先给大家说下&#xff0c;自…

pip更新升级

当我们在使用pycharm安装一些第三方的库的时候往往因为pip的版本过低而安装失败&#xff0c;下面教大家如何更新升级pip 方法一 1、打开PyCharm软件&#xff0c;依次点击 File --> Settings --> Project: Lovely --> Project Interpreter 进入配置界面如下 2 . 选中…

UI设计师面试时如何自我介绍

学会了UI设计技术&#xff0c;接下来的计划就是要找工作了&#xff0c;UI设计在面试环节的自我介绍很重要&#xff0c;有时候一分钟的自我介绍已经足够让HR判断出你适不适合他们公司&#xff0c;那做为一名UI设计师面试时如何自我介绍呢?来看看下面的详细介绍。 UI设计师面试时…

UI设计培训分享:UI设计师如何准备面试?

很多参加完UI培训的同学后期都是需要面临找工作的&#xff0c;那么面试环节是必须要经历的&#xff0c;今天小编为大家介绍的内容就是关于UI设计师如何准备面试?希望下面的内容能够帮助到正在找工作的同学们。 UI设计培训分享&#xff1a;UI设计师如何准备面试? 一、 简历要重…

ES6面试问题汇总

面试官通过总问题&#xff0c;ES6方法开始提问 1.ES6有哪些新增方法&#xff1f;/你了解哪些ES6方法&#xff1f;&#xff08;总问题&#xff09; 块级作用域、 模板字符串、 解构赋值、 箭头函数、 函数默认参数、 剩余参数&运算符、 set和map、 import和exprot用…

2021年UI设计培训面试问题及答案解析

最近有很多刚学完UI设计技术的学员&#xff0c;想要通过金三银四的好时期找UI设计岗位的工作&#xff0c;那么找工作中难免少不了面试问题&#xff0c;下面小编就为大家整理了一下2021年UI设计培训面试问题及答案解析! 2021年UI设计培训面试问题及答案解析&#xff1a; 1、你认…

Vikram 的 UiPath 工具面试经验

Vikram 的 UiPath 工具面试经验 以下是在UiPath的面试经历之一以及他在面试中遇到的问题&#xff1a; 姓名&#xff1a;维克拉姆 V 公司名称&#xff1a; abc 工具&#xff1a; UiPath 面试经历&#xff1a; 嗨朋友们&#xff0c; 总的来说&#xff0c;我在面试小组的面…

UI常见面试题-整体素养篇

1、样看待学历和能力? 回答提示:学历我想只要是大学专科的学历,就表明觉得我具备了根本的学习能力。剩下的,你是学士也好,还是博士也好,对于这一点的讨论,不是看你学了多少知识,而是看你在这个领域上发挥了什么,也就是所说的能力问题。一个人工作能力的高低直接决定其…

非常全面的UI设计面试技巧,简单实用值得收藏

这几年随着科技的发展,UI设计师这种职位越来越热门了。但是大学里教育还没有跟上,在科技发展和变化快的今天,学校里面学的知识和观点与用人单位需求,其实落差还是很大。也有很多朋友询问关于UI设计师求职问题,今天这里我和大家分享一些经验,希望可以帮助到一些想踏入这个…

面试中有关UI自动化的那些事 ~

面试官过程中UI自动化必问的几个问题总结&#xff1a; 一、有做过UI自动化吗&#xff1f;怎么做的&#xff1f;这个问题在面试中问UI自动化相关技能的时候常常被问到&#xff0c;那该如何去回答呢&#xff1f; 接下来我就UI自动化相关的一些面试的问题做一个解答&#xff1a;…

UI面试官的哪些问题让你感觉很高明?

大家在面试UI设计师的时候&#xff0c;遇到让你感觉面试官的问题很高明呢&#xff1f; 专业知识储备、设计思维和技能 1.用户体验设计知识点。给应聘者提问几个专业问题&#xff08;包括用户研究方法、可用性知识、用户思维、情感化设计、web设计常识、移动设计规范、移动互联…

UI设计公司面试时会提哪些问题?

相信很多参加完UI设计培训的同学们&#xff0c;最担心的一个问题就是关于UI设计的面试&#xff0c;技术学到位之后就是要开始求职面试了&#xff0c;那么UI设计公司面试时会提哪些问题呢?来看看下面的详细介绍&#xff0c;希望能够帮助到大家。 UI设计培训干货&#xff1a;UI设…

2021年UI设计面试问题及答案解析

UI设计这个岗位的薪资是非常高的&#xff0c;想要进入到这个行业的小伙伴越来越多&#xff0c;下面小编给大家整理了今年UI设计面试常见的面试题及答案解析&#xff0c;希望能够帮助你在2021年求职UI设计师面试中脱颖而出&#xff0c;找到一份高薪工作。 2021年UI设计面试问题及…