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

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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报文

  1. 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}}

  1. 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中有些内容

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

.(img-0I40aXvJ-1715320192852)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 28
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值