Python刷简书文章阅读量

一、基本原理

  • 简书文章在账号未登陆的的情况下,每刷新一次页面,文章阅读量便会 + 1 。

  • 通过上述思路,我们可以得出,只要不断在浏览器刷新页面(未登陆情况下),便可以达到增加阅读量的目的。

  • 但上述方式,需要不断点击页面刷新按钮,足见效率低下。

  • 我们知道,在浏览器中,页面刷新的本质就是重新向服务器发送get请求,因此,我们猜想,在程序中不断模拟浏览器发出get请求,同样可以达到刷简书文章的目的。

  • 通过浏览器抓包分析,如下图所示

抓包分析

  • 我们发现,在整个请求过程中,阅读量的增加,主要发生于该post请求。

  • 因此,我们只需要在程序中不断发送post请求该接口,便可实现利用程序刷文章阅读量。

二、代码实现

  • 具体代码如下所示
import json
import re
import requests
import threading


# 获取简书文章阅读量
def getReadCount(jianshu_Url):
    # 请求头设置
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36'
    }
    # 请求页面,爬取页面源代码
    result = requests.get(jianshu_Url, headers=headers)
    # 使用正则表达式,在源代码中,获取表示当前文章浏览量的字符串
    results = re.findall(r'"views_count":\d+', result.text)
    # 返回结果
    return results[0].split(':')[1]


# 增加阅读量
def addReadCount(jianshu_Url, readCountEnd):
    # 请求体
    payloadData = {
        'fuck': 1
    }
    # 请求头设置
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36',
        'Origin': 'https://www.jianshu.com',
        'Referer': jianshu_Url
    }
    # 获取文章当前浏览量
    nowReadCount = int(getReadCount(jianshu_Url))
    # 循环发送post请求
    temp = jianshu_Url["https://www.jianshu.com/p/a190a889563e".find("/p/") + 3:]
    for i in range(nowReadCount, readCountEnd):
        requests.post("https://www.jianshu.com/shakespeare/notes/" + temp + "/mark_viewed", data=json.dumps(payloadData), headers=headers)
        print(i)


if __name__ == '__main__':
    # 更改下方的两个参数即可
    # 文章的请求路径
    jianshu_Url = "https://www.jianshu.com/p/XXXXX"
    # 需要刷到多少
    readCountEnd = 1000
    # 使用多线程,提高效率
    for i in range(0, 30):
        threading.Thread(target=addReadCount, args=(jianshu_Url, readCountEnd)).start()
  • 上述变量,是一个“仅供参考”的变量,并不能决定,文章阅读量的最终结果,因为,在实际过程中,发现一个bug。

  • 就是程序这边,有时候只发了一次post请求,但文章的阅读量却增加了 2 。

  • 初步猜测,应该是简书服务器的bug,并非python程序问题!

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值