前言

昨天在学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自动发评论】无情的发评论机器——爬虫小试验相关推荐

  1. ejb stateless 包含在哪个包_微信评论能发表情包的那三天,今年最火表情包已有定论?!...

    大家好,又是斌仔的宵夜报时. 这周一到周三,微信又一次更新,趁着年底又想冲一波热搜,当然它做到了. 那几天的朋友圈,基本都在空手套表情. 不仅可以查看大图,还能观赏动图.上一秒fine,下一秒mine ...

  2. 朋友圈评论发html,微信评论怎么发图片(微信朋友圈评论可以发表情包啦)

    今天你的朋友圈被表情包淹没了没? 啊费一打开朋友圈 几乎全都在"索求"表情包 看到各种沙雕表情包,默默收集了一波哈哈哈 不止朋友圈,就连微博都上了热搜 一波表情包的热潮刷爆了网上 ...

  3. java版微信朋友圈_java调用个人微信API接口发朋友圈,评论和删除朋友圈

    java调用个人微信API接口发朋友圈,评论和删除朋友圈 /** * 发送朋友圈任务 * @author wechatno:tangjinjinwx * @param ctx * @param vo ...

  4. 抖音评论怎么发图片?短短1分钟,轻松学会

    如今的抖音已经成为了很多小伙伴娱乐消遣的手机应用之一,很多小伙伴每天都会刷抖音,有的还会在评论区进行留言.小伙伴留言的时候发现,很多人可以在抖音的评论中发图片,这到底是怎么做到的呢?如果你也想知道如何 ...

  5. html 点赞csdn,CSDN-helper(CSDN自动点赞评论助手)

    CSDN-helperCSDN自动点赞评论助手,是一款可以全自动点赞评论的插件,进入到CSDN博客页面后便可以自动点赞评论,可以选定点赞评论的范围,比如文章字数,浏览数或者文章的发布日期等等. 相关软 ...

  6. 布丁怪兽-csdn博客_证明在评论中-不是布丁

    布丁怪兽-csdn博客 According to 根据 Internet World Stats, there are 3,611,375,813 Internet users around the ...

  7. CSDN文章点赞、收藏、评论后到底发生了什么?简要分析HTTP交互机制

    作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他拥有的,而不是他会的.所以可以不学无数,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WE ...

  8. 使用计算机报点系统时填记,铁路 车务 运转系统 自动闭塞《接发列车作业标准》...

    铁路 车务 运转系统 自动闭塞<接发列车作业标准> 新<接发列车作业>培训内容 铁道部于2009年2月12日发布新<接发列车作业>,原定于2009年3月1日实行,按 ...

  9. Android应用开发-小巫CSDN博客客户端之获取评论列表

    Android应用开发-小巫CSDN博客客户端之获取评论列表 上一篇博客介绍了博文详细内容的业务逻辑实现,本篇博客介绍小巫CSDN博客客户端的最后一项功能,获取评论列表,这个功能的实现跟前面获取文章列 ...

最新文章

  1. taro 在components文件夹中 新建组件时,组件支持自定义命名,但是不能大写开头...
  2. Go 语言编程 — 错误处理
  3. Mysql-4-数据库的基本操作
  4. CV之IC:计算机视觉之图像分类(Image Classification)方向的简介、使用方法、案例应用之详细攻略
  5. java发送内嵌图片邮件
  6. openssh rpm包_100台CentOS7要升级OpenSSH怎么办?
  7. 控制台文字对战游戏 初始版
  8. 基于.Net 写我自己的Ajax后台框架AjaxFramework
  9. java oss如何下载文件_Java OSS批量下载并压缩为ZIP代码实例
  10. seam中格式化文本的处理
  11. 有谁了解 最基础的计算机的网络结构呢?
  12. jQuery温习篇---强大的JQuery选择器
  13. 《软件构架实践》读后感-02
  14. vmware funsion 共享网络模式下PPTP拨号问题
  15. 【JSOI2015】bzoj4487 染色问题
  16. php使用加密狗,加密狗使用方法
  17. Siebel系统中配置LDAP认证
  18. 谈谈数据结构的重要性
  19. iOS10新特性——————陈Hong鑫
  20. 使用Python搭建Gitee图床

热门文章

  1. 解题:使用 Promise 实现 machine 函数
  2. 在 xml 设置的 onClick 属性 为什么有时候点击不起作用呢?
  3. solidwork软件安装显示失败问题处理
  4. 华为防火墙配置(远程管理)
  5. LEC learning1: formality failing owe to change_link
  6. linux查看目录acl权限,ACL权限详解
  7. 图灵语音机器人PHP源码,两个机器人聊天对话实现源码
  8. php模板smarty 例子,php Smarty 模板简单实例
  9. Ajax请求的五个步骤
  10. OpenGL ES 3.0 开发(三):YUV 渲染