首页IT科技csdn文章点赞收藏(CSDN文章点赞、收藏、评论后到底发生了什么?简要分析HTTP交互机制)

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

时间2025-06-16 21:47:24分类IT科技浏览5727
导读:作者:Eason_LYC...

作者:Eason_LYC

悲观者预言失败             ,十言九中              。 乐观者创造奇迹                     ,一次即可                    。

一个人的价值       ,在于他拥有的      ,而不是他会的       。所以可以不学无数                     ,但不能一无所有!

技术领域:WEB安全              、网络攻防

关注WEB安全                    、网络攻防              。我的专栏文章知识点全面细致              ,逻辑清晰       、结合实战      ,让你在学习路上事半功倍                    ,少走弯路!

个人社区:极乐世界-技术至上

我们追求技术至上              ,这是我们理想中的极乐世界~(关注我即可加入社区)

1              、为什么要写这篇文章

作为一名原创作者,非常关注点赞                    、收藏       、评论数                    ,这代表了作品的受欢迎程度                     ,也是各位读者对我创作文章的实际反映                    。同时作为web安全领域的作者,DN兄实现这些功能的HTTP交互机制             ,也是要稍微看看的       。

2. CSDN点赞       、收藏                    、评论的数据包分析

只要是B\S架构的应用或网站                     ,绝大部分都是通过数据报文实现交互(即TCP\IP)       ,CSDN博客网站属于最为标准的web网站             ,对其进行分析                     ,首先就要获取交互的数据包       。

之前文章

有过基础介绍:

web安全最亲密的战友Burp Suite—网络攻防常用工具介绍–burp suit工具初体验一

web安全最亲密的战友Burp Suite2–target模块体验)

B站视频

网络攻防常用工具介绍–burp suit工具初体验一

web安全最亲密的战友Burp Suite2–target模块体验

2.1 点赞的前提是什么

回想我们在网站上的操作流程       ,首先要登陆才能进行后续的点赞或者收藏评论      ,所以要先进行登陆                    。

正常登陆验证 正常用户操作很简单                     ,就是输入用户名和密码             。程序以POST方式将数据包发送到服务器中              ,经过各种验证再返回结果       。 保持登陆状态即cookie

不可能在每个操作前都要用户输入账户密码      ,这样太繁琐                    ,不会有任何商用网站会这样对待自己的用户                     。所以在第一次登陆成功后              ,浏览器和后台服务器间要保存一个“凭证             ”,用于证明这个用户已经通过验证             。后续用户拿着这个“凭证                     ”就可以操作各种功能。这个“凭证       ”就是cookie

抓包查看cookie中一共有28个字段                     。

Cookie:

uuid_tt_dd=???;

log_Id_pv=???;

Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=???;

Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=???;

Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=???;

log_Id_view=???;

log_Id_click=???;

ssxmod_itna=???;

ssxmod_itna2=???;

UN=???;

BT=???;

p_uid=???;

UserName=???; 重点关注这个字段

UserInfo=???;

UserToken=???; 重点关注这个字段

UserNick=???;

AU=???;

dc_session_id=1???;

c_pref=default;

c_ref=default;

c_dsid=???;

c_first_ref=default;

c_first_page=???;

c_segment=???;

dc_tos=???;

Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=???;

dc_sid=???;

c_page_id=default 验证凭证                    ,到底是验证cookie中哪个字段

这是个复杂的问题                     ,因为根据设计理念不同,实现功能不同             ,会验证不同的cookie字段                    。况且我们没有相关文档说明                     ,无法一一明确各cookie字段确切含义       ,怎么办?

其实换一种思路就会发现问题很简单             ,按可能性由大到小测试一下就可以。我们只要测试出一种组合能达到我们的目的就行              。所以经过仅仅2次测试就找到了cookie中证明你登录状态的两个字段 UserName UserToken

登陆自己的账户                     ,抓包将自己cookie中的这两个字段值保存下       ,方便以后使用

设置个人账户信息      ,用于保持登陆状态 headers = { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \ Chrome/105.0.0.0 Safari/537.36 # 设置一个正常的浏览器User-Agent值                     ,比较稳妥 } cookies = { UserName: 我的csdn账户id, UserToken: ni_ke_yi_cai_cai }

OK              ,现在保持登陆的问题解决了      ,下面我们继续分析                    。

2.2当我们给文章点赞时会发生什么?

实际操作并抓包就会看到大量数据包                    ,经过删选发现关键的一个POST数据包       。

这个数据包报文主要内容如下(为了方便查看              ,不太重要的字段已经删除,敏感信息进行了处理) POST //phoenix/web/v1/article/like HTTP/2 Host: blog.csdn.net Cookie: UserName=eason612; UserToken=ni_ke_yi_cai_cai; User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0 Accept: application/json, text/javascript, */*; q=0.01 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Origin: https://blog.csdn.net Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin Te: trailers articleId=126951795

看到这个数据包                    ,可以很清晰的知道

点赞就是向链接https://blog.csdn.net/phoenix/web/v1/article/like                     ,发送一个POST数据包,数据包内容为文章ID(articleId)

那么articleId如何获取?

其实只要细心就能发现             ,所有的文章点击进去                     ,它的链接都是https://blog.csdn.net/用户名/article/details/126793183

这一串数字就是articleId       ,就是每个文章唯一的标识ID

所以这个数据包所有需求             ,我们都能满足                     ,是否就可以点赞呢?测试下就知道了              。在此使用工具Apifox(一个非常流行的接口测试工具       ,感觉要比postman好用)

完整的测试数据包如下:

后台响应结果成功      ,我们再用浏览器访问对应文章                     ,查看实际结果

成功!

2.3 我们收藏文章时会发生什么?

同样的思路              ,在收藏文章中      ,查看大量数据包时发现两个关键POST报文

https://mp-action.csdn.net//interact/wrapper/pc/favorite/v1/api/folderListWithCheck

这个报文的响应如下:返回一个json数据                    ,查看后发现是本人所有的收藏夹明细,内容很多              ,最重要的就是每个收藏夹对应的id

{“code      ”:200,“msg                     ”:“success              ”,“total      ”:0,“data                    ”:{“result              ”:[{“Description”:“eason612的默认收藏夹                    ”,“Username                     ”:“eason612”,“FavoriteNum             ”:1712,“CreatedAt                     ”:“2022-05-14T12:03:11.000+0000       ”,“CheckStatus             ”:0,"ID":16557983,“IsPrivate                     ”:1,“FollowNum       ”:0,“UpdatedAt      ”:“2022-09-30T23:36:04.000+0000                     ”,“Name              ”:“默认收藏夹      ”}…],“total                    ”:9}}

https://mp-action.csdn.net/interact/wrapper/pc/favorite/v1/api/addFavorite

请求包字段分析

url: 文章的标准完整链接

无论之前是短链接或是其他形式的链接,在跳转解析后                    ,均会访问到这个标准样式的链接                     ,格式为

https://blog.csdn.net/文章作者的ID/details/文章ID(articleId)

另外,在访问到指定文章页后             ,返回的大量数据中都能找到接下来分析的字段值 source:来源                     ,一般均为blog sourceId:和上面url链接的最后数字一致       ,其实就是上文说的文章ID(articleId) author:被收藏文章的作者id title:被收藏文章的标题 description:被收藏文章的描述                    。创作过文章的小伙伴都知道             ,发布前要填写的描述信息就在这里 fromType:来源类型                     ,电脑端就默认为PC username:操作者的本人id(登陆用户的id,上文提到的cookie中的username) folderId:文件夹的id       ,就是上一个重要post数据包中返回的ID字段      ,用于指定收藏到哪个收藏夹中

响应报文字段分析

内容很多                     ,但均是重复的              ,仅有一个字段表明是否收藏成功      ,值得关注       。

msg:如是success则收藏成功                    ,其他值则失败       。

经过上述分析              ,发现收藏流程异常简单:

收藏就是向链接https://mp-action.csdn.net/interact/wrapper/pc/favorite/v1/api/addFavorite,发送一个POST数据包                    ,数据包内容为json { "url":"标准url", "source":"blog", "sourceId":"文章ID(articleId)", "author":"被收藏文章的作者id", "title":"被收藏文章的标题", "description":"被收藏文章的描述", "fromType":"PC", "username":"登陆状态账户ID", "folderId":"收藏夹id", "newFolderName":"" }

以上这些字段值                     ,在访问到指定文章页中(查看html页面源码),相对固定的位置处都能找到对应字段值             ,有兴趣的小伙伴可以利用脚本自动抓取这些内容                    。本文仅解析数据包                     ,不在此点展开             。

分析完       ,就来使用Apifox实际测试下

测试成功!

2.4如何评论?

Let’s go! 下一个功能是评论             ,继续抓包查看                     ,果然发现关键POST数据包

https://blog.csdn.net/phoenix/web/v1/comment/submit POST /phoenix/web/v1/comment/submit HTTP/2 Host: blog.csdn.net Cookie: 此处省略一万字 Referer: XXX Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Content-Length: 120 commentId=&content=%E6%96%87%E7%AB%A0%E5%BE%88%E6%A3%92%EF%BC%8C%E6%94%AF%E6%8C%81%E5%8D%9A%E4%B8%BB&articleId=126951795

header中没有特别的       ,body中有些内容

commentId:评论ID 保持默认为空即可 content:评论具体内容      ,是经过了url编码的内容 articleId:文章ID                     ,这个就非常熟悉了

没有新的内容了

需要注意的是              ,在测试时发现对评论有多项限制

评论每天有数量限制 对于评论有速度限制      ,过快的话                    ,虽然响应成功              ,但是实际上没成功       。 评论太短             、一个账户对不同文章的评论不能完全相同,评论内容与文章无关                    ,这些情况多次发生均会触发相关机制 其他用户举报                     ,导致一段时间内不能发布评论 VIP用户与非VIP用户在HTML源代码中class类命名和取值略有不同                     。

有了之前描述,会发现评论异常简单             。

3. 梳理总结

经过上面的分析             ,点赞       、收藏                     、评论的流程其实非常简单。

首先判断是否处于登陆状态(就是验证cookie)                     ,满足则可以执行后续任务                     。其次对于点赞             、收藏和评论仅需要满足特定数据包的字段和值       ,只需保持填写正确                    。最后要注意评论条件             ,触发的话会造成数据包无论返回什么信息                     ,实际页面上会发生js拦截或其他异常情况       ,造成失败。

登陆状态保持:设置特定cookie

UserName: 我的csdn账户id,

UserToken: ni_ke_yi_cai_cai

点赞

[POST] https://blog.csdn.net/phoenix/web/v1/article/like

body: articleId=文章ID

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

收藏

[POST] https://mp-action.csdn.net/interact/wrapper/pc/favorite/v1/api/addFavorite

body: JSON

{

“url              ”:“标准url”,

“source                    ”:“blog                     ”,

“sourceId”:“文章ID(articleId)             ”,

“author                     ”:“被收藏文章的作者id       ”,

“title             ”:“被收藏文章的标题                     ”,

“description       ”:“被收藏文章的描述      ”,

“fromType                     ”:“PC              ”,

“username      ”:“登陆状态账户ID                    ”,

“folderId              ”:收藏夹id,

“newFolderName”:“                    ”

}

评论

[POST] https://blog.csdn.net/phoenix/web/v1/comment/submit

body: commentId=&content=你的任意评论&articleId=文章ID

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

4. 一键三连demo演示

演示脚本仅用于本文的分析验证

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

声明:本站所有文章      ,如无特殊说明或标注                     ,均为本站原创发布              。任何个人或组织              ,在未征得本站同意时      ,禁止复制                    、盗用、采集              、发布本站内容到任何网站                    、书籍等各类媒体平台                    。如若本站内容侵犯了原著者的合法权益                    ,可联系我们进行处理       。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
什么网站可以赚钱?(什么网站可以赚钱吗-告诉我简单就能挣钱的自媒体不是想骗我钱就是要骗我流量) 基于51单片机的智能小车设计报告(51单片机之智能小车(避障、跟随、循迹))