评论

收藏

[python] 绝密!Python告诉你刷分升级神器背后的原理!这篇文章差点没过审

编程语言 编程语言 发布于:2021-07-30 20:42 | 阅读数:281 | 评论:0


声明
本文内容只作学习交流之用,请勿将其用于商业和非学习用途和违反法律法规的行为。

今天我百无聊赖刷着 CSDN 的时候,看到了官方博客的帮助文档:
DSC0000.png
看到这个我顿时精神就上来了。CSDN等级的提升需要积分,要是写一写评论就能够得到分,那不爽歪歪?(剧情需要,请勿模仿!!!)
当然,刷分的事情我是不会去做的。现在来以发送评论为例介绍 requests 库(这才是重点!)
随便找一篇别人的博客:
DSC0001.png
这个标题让人看上去就很不爽,真欠打。决定了,就拿你当我的小白鼠!
马上,开整!
requests 库
这个机器需要用到的库很简单:requests。首先cmd打开命令行安装库:
pip install requests
然后在 Python 中导入:
import requests
网页
随便打开一篇博客(就以刚刚那篇欠揍的博客为例),首先看搜索栏的网址,看最后这几个数字,这是该篇博文的 id,这个要记住,这个在待会会用到:
DSC0002.png
然后我们在博客页面单击右键,选择“检查元素”,不同的浏览器可能会不一样,有可能只是“检查”或是其他,自己试一下。然后会弹出一个检查窗口,里面有一堆乱七八糟的东西:
DSC0003.png
接下来点击右上角的“Network”(网络)。点击左上角的圆点使他变成红色,开始录制动作:
DSC0004.png
接下来我们就滑到评论区,随便写下一条评论并发送(不要做多余的动作),浏览器会记录下我们所做的网络活动。我们可以看到我们所做的网络活动,在这些活动中寻找最有可能的一条(可能会有些麻烦,慢慢找,不着急),点开来查看我们的活动。怎么找到自己需要的是哪一条呢,这里有一个方便的方法,一个个点开来,在Headers(请求头)栏滑到最下面,看到它有出现我们需要的信息,那么大概率就是这个了:
DSC0005.png
在这里我的是 submit。
接下来我们回到 Headers 栏的顶端,这里有网页请求的一些基本信息:
DSC0006.png
URL是进行网页请求的地址,注意这个与你在上面搜索栏看到的是不一样的。Method 后的POST是请求方式。Status Code是状态码,200表示请求成功。POST方式就要使用类的 post 方法:
requests.post(url=<url地址>, headers=<请求头>, data=<信息>)
首先是 url,我们需要一个变量(字符串类型)来存储这个url地址:
url = 'https://blog.csdn.net/phoenix/web/v1/comment/submit'
接下来是请求头,请求头就是Requests Headers 这一部分,用一个字典存储:
DSC0007.png
比较重要的是 cookie。这里我把 cookie 部分和 user-agent 部分复制下来放到请求头字典中去:
headers = {
'cookie': 'uuid_tt_dd=10_20287097150-1626593870867-304353...'
'user_agent': 'Mozilla/5.0...'
}
这个 cookie 是什么呢,其实它的作用是传输了用户的信息、身份,就好比你登录了 CSDN 之后,你再进入这个网页时就不需要再登陆了,因为浏览器已经保存了你的身份信息并发给了网页。由于评论文章需要登录后才可进行,因此你必须在已登录状态下获取 cookie,并且在发送请求时必须带上这个 cookie,否则无法进行评论操作。
最后是 data,再滑到最底部,看到一些信息,这就是 data,同样以字典形式保存:
DSC0008.png
data = {
'commentId': '',
'content': '写得真棒!',
'articleId': '118853825',
}
于是我们就可以用 post 方法来发送请求获得响应结果了:
respond = requests.post(url=url, headers=headers, data=data) # 发送请求并将响应结果放入respond变量
然后我们还要看看请求结果
print(data['areticleId']) # 打印文章id
print(respond.status_code) # 打印状态码
print(respond.text) # 打印返回文本
print(respond.json()['message']) # 打印返回文本经json解码后的message部分
输出:
118853825
200
{"code":200,"message":"success","data":17638523}
success
再看回那个欠揍的博客:
DSC0009.png
十分成功!
这样,我们就完成了对这篇文章的评论。但是我们要达到效果,必须不断访问不同的文章,这个时候我们的文章 id 就派上用场啦。我们可以发现,data 中的 articleId,其实就是文章的 id,这样我们只需生成不同的文章 id,然后放到 articleId 中,再进行评论就可以了(我只是在教你们访问不同博客的方法,并不倡导你们刷分):
import time
for i in range(100000000, 100000050):
data.update({'articleId': str(i)}) # 刷新
respond = requests.post(url=url, headers=headers, data=data)
print(data['articleId']) # 打印文章id
print(respond.status_code) # 打印状态码
print(respond.json()['message']) # 打印返回文本经json解码后的message部分
  time.sleep(2)
由于频繁评论会导致被提示“您评论次数太多了,请休息一下!”,因此我还导入了 time 库,在每一次评论后等待两秒再评论。
来看看最后的效果:
DSC00010.gif
成功!(学到了 requests 的使用方法就好,不要拿它来干违法违规的事情!)
优化后的代码
import requests
import time
url = 'https://blog.csdn.net/phoenix/web/v1/comment/submit'
headers = {
'cookie': 'uuid_tt_dd=10_20287097150-1626593870867-304353...'
'user_agent': 'Mozilla/5.0...'
}
data = {
'commentId': '',
'content': '写得真棒!',
'articleId': '118853825',
}
for i in range(100000000, 100000050):
data.update({'articleId': str(i)})
respond = requests.post(url=url, headers=headers, data=data)
print(data['articleId']) # 打印文章id
print(respond.status_code) # 打印状态码
print(respond.json()['message']) # 打印返回文本经json解码后的message部分
  time.sleep(2)
尾声
本篇文章主要介绍了 requests 库的简单的使用方法,刷分的行为不建议模仿,分数还是要靠自己写文章等的正当途径慢慢挣的好。最后还要感谢您完整地看完这篇文章。
本文收录于专栏:Python爬虫
关注作者,持续阅读作者的文章,学习更多Python知识
https://blog.51cto.com/u_15310475
2021/7/22
声明
本文内容只作学习交流之用,请勿将其用于商业和非学习用途和违反法律法规的行为。
推荐阅读

  • Python爬虫 | 爬取b站北京奥运会开幕式弹幕,有多少人从东京奥运会来的?
  • Python爬虫从0到1 | 入门实战:360翻译 ——requests库之POST方法

关注下面的标签,发现更多相似文章