【CSDN自动发评论】无情的发评论机器——爬虫小试验
前言
昨天在学AC自动机的时候,做到一道题,搜题解的时候,看到了一篇非常好的博客:
传送门
看完之后不禁觉得,写的真是太好了,再仔细一看,居然是我的学姐写的耶,于是就想在评论区给学姐捧捧场,发点什么好呢,发个“太强了”吧。
这个时候我正好开着抓包工具(怎么可能啊QAQ),然后就抓到了这样一个包
难道——这该不会——这莫非
怀着激动的心情我往上翻了翻
果然,这是一个post请求,也就是说,我的发评论的操作,竟然是由这个请求完成的!(假装震惊0.0)
既然如此,通过简单的操作模拟这个请求,是不是就可以自动发评论了呢,心里大概有了个谱,那就让我们来试一试吧。
冲
于是我在各种博客下面发了好多好多奇奇怪怪的评论,当然最后都删掉了啦!
通过我多次的实验发现,所有的评论竟然都是通过同一个URL发出去的!没错,就是上面的那个URL:
https://blog.csdn.net/phoenix/web/v1/comment/submit
于是我复制了这串URL,粘贴到我的导航栏里,然后按了一下回车,然后
ohhhhhhhhhhhhhh
ohhhhhhhhhhhhhhhhhh
屁都不会发生哦
其实应该是这样的
这是个什么意思呢
反正我是看不懂,没看到我抓包工具都是中文的吗?总之,我只看到了 ‘GET’ not supported 几个字,根据我这个小学生的英语水平来判断的话,大概意思就是,GET请求不被支持,吧。
所以这个URL本身就是为了发评论而存在的,只能接受POST请求
那么它是通过什么来判断评论的内容和哪篇博客的呢,诶,还记不记得我们第一次抓到的包
没错,就是这个,很明显,content里存的就是我们评论的内容嘛,那么下面那个神秘的代码是什么呢?
找到了吧,嘿嘿,其实就是用来定位博客的啦,可以理解为CSDN给每篇博客都定义了一个编号
那好吧,既然都这么清晰了,我们就打开pycharm(我管你用的是啥,哼),来模仿一下那个请求吧
嗯URL,嗯headers,嗯post请求,嗯
相信聪明的你一定很快就能写出代码来了
import requestsurl = 'https://blog.csdn.net/phoenix/web/v1/comment/submit'headers = {'cookie' : '你不会真以为我会放自己的cookie在这里吧不会吧不会吧','referer': 'https://blog.csdn.net/qq_45599865/article/details/113048103?spm=1001.2014.3001.5501','user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45'
}data = {'commentId' : '','content': '太强了','articleId': '113048103'
}requests.post(url = url , headers = headers , data = data)
这样就可以了呢,虽然你复制去跑肯定是错的(注意cookie啊喂)
但是写完这个代码我难免觉得有些空虚,这个代码的作用,未免太太太太太小了吧,只是发一条评论,那不是有手就行,要这代码做什么呢
害,没办法,我就知道你们会这样想
给学姐所有的博客都发个“太强了”吧
如果这个程序,能给学姐所有的博客都发条评论,也学会比之前的代码好一些吧,如果修改一下URL,就能实现给任何一个人的所有博客发评论,那就再好不过了吧,嘿嘿,我懂你
那么我们来分析分析,要给一篇博客发评论,我们需要的其实只有博客的编号而已对吧
只要我们能够拿到学姐所有博客的编号,就可以实现给所有博客发评论了吧嘿嘿
那么我们先来浏览一下学姐主页的构成
给学姐点个关注也不是不可以哦
让我们打开抓包工具,用金手指随便点一篇博客康康吧
很显然,这篇博客的地址就存在那个href中对吧
那么我们看一下上面的目录,有没有成列表分布的目录呢,诶,还真有
这显然就是学姐博客的列表了
接下来怎么做不用我多说了吧,当然是查帕斯啦!(不是不说么)
url = 'https://blog.csdn.net/qq_45599865'headers = {'cookie' : '天真,我会把cookie放这儿吗','user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45'
}res = requests.get(url = url , headers = headers).text#print(res)tree = etree.HTML(res)lst = tree.xpath('//*[@id="floor-user-profile_485"]/div/div[2]/div/div[2]/div/div[2]/div/div')
这样我们就拿到了这个列表,接下来循环每一个div,就把我们要的href取出来,然后截取到每篇博客的代号,接着一篇一篇地发评论就好了吧
注意我们发评论时的referer也是要改的哦
for i in lst :href = i.xpath('//article[@class="blog-list-box"]/a/@href')#print(href)for hre in href:#print(hre)url1 = 'https://blog.csdn.net/phoenix/web/v1/comment/submit'headers1 = {'cookie': '都说了不会有cookie的啦,你还看,再看也没用','referer': '{0}?spm=1001.2014.3001.5501'.format(hre),'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}hre = hre + "@"ex = '/article/details/(.*?)@'hr = re.findall(ex , hre)[0]#print(hr)data1 = {'commentId' : '','content': '太强了','articleId': '{0}'.format(hr)}try:requests.post(url=url1, headers=headers1, data=data1)print("成功!")except:print("失败。。")
写完这个我信誓旦旦的跑了一遍
然而
然而它竟然
只发了三篇!!!!!
这是怎么回事呢,为什么发了三篇别的都没有发出去呢
其实这是CSDN限制的问题哦,如果你尝试在这篇博客下面连续发四个评论,你就会发现——这是不可行的!而过了一段时间之后再发,就又发的出去了
经过我多次的实验,基本可以确定,这个CD的时间是一分钟左右,也就是说,在CSDN里,你一分钟最多只能发三个评论哦,那么就只好在发完一个评论之后,让程序休息一段时间啦
完整代码
import requests
from lxml import etree
import re
import timeurl = 'https://blog.csdn.net/qq_45599865'headers = {'cookie' : '用你自己的辣','user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45'
}res = requests.get(url = url , headers = headers).text#print(res)tree = etree.HTML(res)lst = tree.xpath('//*[@id="floor-user-profile_485"]/div/div[2]/div/div[2]/div/div[2]/div/div')for i in lst :href = i.xpath('//article[@class="blog-list-box"]/a/@href')#print(href)for hre in href:#print(hre)url1 = 'https://blog.csdn.net/phoenix/web/v1/comment/submit'headers1 = {'cookie': '真是的都说了几遍啦,真是讲不明白呢,不过,这样的你,也有点可爱哦(呕)','referer': '{0}?spm=1001.2014.3001.5501'.format(hre),'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}hre = hre + "@"ex = '/article/details/(.*?)@'hr = re.findall(ex , hre)[0]#print(hr)data1 = {'commentId' : '','content': '太强了','articleId': '{0}'.format(hr)}try:requests.post(url=url1, headers=headers1, data=data1)print("成功!")except:print("失败。。")time.sleep(30)
【注意事项】非常非常的重要
如果要在学姐的博客下面发评论的话,记得点赞和关注哦
【CSDN自动发评论】无情的发评论机器——爬虫小试验相关推荐
- ejb stateless 包含在哪个包_微信评论能发表情包的那三天,今年最火表情包已有定论?!...
大家好,又是斌仔的宵夜报时. 这周一到周三,微信又一次更新,趁着年底又想冲一波热搜,当然它做到了. 那几天的朋友圈,基本都在空手套表情. 不仅可以查看大图,还能观赏动图.上一秒fine,下一秒mine ...
- 朋友圈评论发html,微信评论怎么发图片(微信朋友圈评论可以发表情包啦)
今天你的朋友圈被表情包淹没了没? 啊费一打开朋友圈 几乎全都在"索求"表情包 看到各种沙雕表情包,默默收集了一波哈哈哈 不止朋友圈,就连微博都上了热搜 一波表情包的热潮刷爆了网上 ...
- java版微信朋友圈_java调用个人微信API接口发朋友圈,评论和删除朋友圈
java调用个人微信API接口发朋友圈,评论和删除朋友圈 /** * 发送朋友圈任务 * @author wechatno:tangjinjinwx * @param ctx * @param vo ...
- 抖音评论怎么发图片?短短1分钟,轻松学会
如今的抖音已经成为了很多小伙伴娱乐消遣的手机应用之一,很多小伙伴每天都会刷抖音,有的还会在评论区进行留言.小伙伴留言的时候发现,很多人可以在抖音的评论中发图片,这到底是怎么做到的呢?如果你也想知道如何 ...
- html 点赞csdn,CSDN-helper(CSDN自动点赞评论助手)
CSDN-helperCSDN自动点赞评论助手,是一款可以全自动点赞评论的插件,进入到CSDN博客页面后便可以自动点赞评论,可以选定点赞评论的范围,比如文章字数,浏览数或者文章的发布日期等等. 相关软 ...
- 布丁怪兽-csdn博客_证明在评论中-不是布丁
布丁怪兽-csdn博客 According to 根据 Internet World Stats, there are 3,611,375,813 Internet users around the ...
- CSDN文章点赞、收藏、评论后到底发生了什么?简要分析HTTP交互机制
作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他拥有的,而不是他会的.所以可以不学无数,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WE ...
- 使用计算机报点系统时填记,铁路 车务 运转系统 自动闭塞《接发列车作业标准》...
铁路 车务 运转系统 自动闭塞<接发列车作业标准> 新<接发列车作业>培训内容 铁道部于2009年2月12日发布新<接发列车作业>,原定于2009年3月1日实行,按 ...
- Android应用开发-小巫CSDN博客客户端之获取评论列表
Android应用开发-小巫CSDN博客客户端之获取评论列表 上一篇博客介绍了博文详细内容的业务逻辑实现,本篇博客介绍小巫CSDN博客客户端的最后一项功能,获取评论列表,这个功能的实现跟前面获取文章列 ...
最新文章
- taro 在components文件夹中 新建组件时,组件支持自定义命名,但是不能大写开头...
- Go 语言编程 — 错误处理
- Mysql-4-数据库的基本操作
- CV之IC:计算机视觉之图像分类(Image Classification)方向的简介、使用方法、案例应用之详细攻略
- java发送内嵌图片邮件
- openssh rpm包_100台CentOS7要升级OpenSSH怎么办?
- 控制台文字对战游戏 初始版
- 基于.Net 写我自己的Ajax后台框架AjaxFramework
- java oss如何下载文件_Java OSS批量下载并压缩为ZIP代码实例
- seam中格式化文本的处理
- 有谁了解 最基础的计算机的网络结构呢?
- jQuery温习篇---强大的JQuery选择器
- 《软件构架实践》读后感-02
- vmware funsion 共享网络模式下PPTP拨号问题
- 【JSOI2015】bzoj4487 染色问题
- php使用加密狗,加密狗使用方法
- Siebel系统中配置LDAP认证
- 谈谈数据结构的重要性
- iOS10新特性——————陈Hong鑫
- 使用Python搭建Gitee图床
热门文章
- 解题:使用 Promise 实现 machine 函数
- 在 xml 设置的 onClick 属性 为什么有时候点击不起作用呢?
- solidwork软件安装显示失败问题处理
- 华为防火墙配置(远程管理)
- LEC learning1: formality failing owe to change_link
- linux查看目录acl权限,ACL权限详解
- 图灵语音机器人PHP源码,两个机器人聊天对话实现源码
- php模板smarty 例子,php Smarty 模板简单实例
- Ajax请求的五个步骤
- OpenGL ES 3.0 开发(三):YUV 渲染