如何完全零全础学会抓包,并制作一个php的api

bilibili的各位朋友,大家好呀(ㅇㅅㅇ❀)。 本来想做成视频的,结果一来二去没时间,没设备。
最后就做成了一个文章,其实文章也挺好的,我不紧张讲的也更好,等上了大学有机会再做视频吧(„ಡωಡ„)栓Q
废话不多说,那就开始吧O(≧▽≦)O 材料:抓包工具(这里我用的是httocanary),浏览器(x浏览器)。
额外工具
[可以没有,但还是有严谨性,更方便测试]:请求工具(post请求app)。
可能遇到的问题
:浏览器报证书错误(浏览器报证书错误是因为https加密通讯的原因,抓https就必须要有证书,不然就报错,在Android7.0用户可以手动添加证书,Android7.0以后系统默认不信任用户的证书,必须升级成系统证书,系统证书需要root,无root的可以去弄虚拟环境,bilibili教程很多我就不讲了)[原理:抓包工具的原理是在浏览器和服务器之间当个中间人,让抓包工具与服务器通讯,再伪造一个证书和浏览器通讯,但这个伪造证书不是服务器正规的证书,所以就能判断不是和服务器直接通讯,从而判断数据被中间修改过,所以浏览器拒绝https的数据包]
不一定httpcanary更好,但使用和我一样的可以更好的模仿我的过程,更少的走歪路。 抓包一般抓网页的,如果是app的,一开始有固定的内置证书,没会逆向破解的抓不了,我们新手抓网页的就行了,这里我用bilibili的点赞来演示,
注意:手机端的网页是没有点赞功能的,手机端的bilibili网页不管你点什么都会跳转到下载,所以只能用电脑版的网页。
手机用电脑网页的一个方法就是修改ua,ua是一种判断请求软件(浏览器),设备等信息的一个参数,可以通过改成电脑ua来伪装电脑访问,至于ua具体是什么可以通过bilibili搜索教程知道,我就懒的说了,诶嘿(„ಡωಡ„)。
具体也没什么好讲的,就是浏览器打开ua设置,切换成电脑ua
换成桌面的就行了,如果只有各种手机的话,去百度复制一个电脑的ua,粘贴进去就行了。 建议不要用自带的浏览器,自带的验证严格一点(为了用户隐私),第三方的浏览器抓包比较好用(因为数据通讯验证不严格) 然后直接访问bilibili.com,并登入自己的账号,随便选一个视频点进去。
然后捏紧你的抓包按钮,在点赞前一刻开启抓包,点赞完立马关闭(网页数据包非常多,只有这样才能更好的找数据包,平均多抓包一秒就多十几个数据包)。
小技巧:httpcanary在开启抓包的状态,按返回会获得一个小窗口,这个小窗口类似于悬浮窗,需要悬浮窗权限,而独立于桌面的悬浮窗,所以没有悬浮窗的手机在抓包按钮绿色的状态下返回也可以有悬浮窗。
抓到的数据包如下。
第一刚好在通讯的时候被我关闭了,结果就是无返回,也就是无响应,因为我是在点完赞之后关闭的抓包(已经是点赞成功的状态),所以这个直接排除 剩下的就看返回码,我们是抓通讯数据包,返回200代表访问成功,其他的也有403访问错误之类的,但没有返回码就不是通讯的数据包(可以设置过滤200返回码以外的数据包),那也就可以排除了
如果不想继续分析的话,多抓几次点赞记录下来,相同的就是点赞的数据包了,但正常情况下还是需要分析的,以免应对一些意料之外的原因 分析有以下几步骤: 查看返回信息
这种没返回的就基本上能判断不是了,因为吧,你想想,点赞成功或者失败,网页是不是得显示给你看👀,如果不返回,那网页怎么显示你图标亮起来。 以此类推: 第二个
第三个
偶,第三个有api的返回码(code),那就基本上可以确定这一个了,如果数据包过多的话,就多抓几次,也可以看数据包的链接,一般修改数据包都会有相应的链接变量名称,比如这个点赞
like喜欢的意思,够好联想了吧^_^ 再不然,就重发数据包,一般点赞过后再点赞就会报错,我们试试重发
然后看新的数据包里面的返回数据(点击-响应-预览)。
wooooooo!!! 这不就成功了,那么,我们去把视频的点赞取消了
然后重发数据包(长按数据包-重发)[重发过后的数据包和直接抓到的没有任何区别,就图标不一样,所以两个都能重发]。
好像是成功了,然后我们刷新网页
wooooo!!!成功了!! ok这就是抓包的全部内容了,诶嘿(≧ω≦)/。 接下来就是教怎么写api了,这个api也就只有一个功能而已,就是模拟发送数据包,而api就是外部程序的缩写,至于api有什么用处唔。。。。。,用不到就干脆别学了(。・`ω´・),本篇文章只适用于已经会使用api,想了解怎么写的用户。
这里我就使用php这个编程语言给大家演示,不同语言有不同的写法,但Python无疑是最简单的,甚至不用php这么麻烦,导入request库,直接按照格式写就行了(不知道格式就百度,神仙来了也得乖乖按照格式来),不过,Python制造可以被访问的api需要用到的框架不好搭建,有些服务器甚至搭不了,所以我就用php来演示了。 在制造api之前,我们还要筛选一下数据包的数据,因为网站访问时是把本地的cookie同时拿去请求的,所以有一些用不到我们要给他筛选掉,为什么不用的要费辣么大力去筛选呢。 举个荔枝: 原本提交数据a和b就可以点赞了,但他请求还带上了c,c和用户验证有关系,结果就导致了。 原本你拿a和b就能访问了,但有了c之后你还要再多提交c。 如果不改变c,只改变a和b就会造成,服务器验证ca,b不是来自同一用户,请求不通过,如果再多提交c的话。。。。,用户:api是为了方便,我用一个api你参数比浏览器访问都多,我还用什么api(ノ`⊿´)ノ。 至于怎么筛选参数的话。。。。,我选择钝角! 筛选参数没什么方法,就是删一个访问一下,每次访问失败就代表这个不是必要参数,以此类推,直到剩下的参数任何一个都不能删为止,至于数据包的参数的话。
一般数据包分为get和post数据包
get的数据包有一下参数:
hearder(请求头)[作用是提供数据包信息,是json啊,文件啊还是什么的] ua[作用上文说过,就是验证数据包来自于什么,如果你浏览器的ua为电脑,那他发的数据包就全部来自于电脑,服务器认为你是电脑,返回的也就是电脑页面的信息,这个不会随着能账号改变而改变的,
基本上一个普通手机的ua可以过任何网站的设备检测,这是万用药
]
{可以被包含请求头里面一起传输}
cookie[一直临时验证身份的东西,免登入就是用cookie实现的,你可以这么理解,如果没有cookie保存密码,哪你每刷新一次页面,就要重新登入一次!
其中隐藏着账号密码,api提供的参数一般都使用于这里。
]
{可以被包含请求头里面一起传输}
url(链接)[也就是请求地址,get传入参数都是用?加key=value实现的,参数之间用&隔开,所访问的参数会在连接显示出来]
红色是链接url,蓝色是问号,品红色是key,黄色是value,百度的搜索就是get传参数。
小知识:浏览器在访问的时候,会把中文转成Unicode编码,一般是带有%和大写字母加数字
post有以下参数:
(引用get参数讲解,诶嘿!(„ಡωಡ„)栓Q) post和get基本一模一样,post也可以链接传参数,包括请求头什么的,都一模一样 但!,post比get多了一个very高级的功能,表单!(不知道可以查一查),表单可以包括不限于,视频,图片,音乐以外等。。。。所有数据传输,而get只能链接传字母参数,所以说。 post=get+表单 end!!,嗯就这些了!(哪里讲的不清楚的可以查一查相关详解,或者在评论区说一下,我重新改) 所以我们要删剪的参数有 请求头(cookie就在这里,和一些数据包数据一般都在这里)and表单。 最好的方式是(长按数据包-点击编辑重发)
然后就看到了里面,如下
上面是get参数(也就是url参数)和请求头参数 往下滑就有
如果表单是图片之类的数据,点击就能上传更换,表单是普通数据点击就能在线修改
参数与参数之间由&隔开,所以一次删就是&+参数同时删 唔。。,其实你也不用记什么能删,什么不能删,你只需要知道,删了访问不成功就是不能删,诶嘿(„ಡωಡ„),一个一个删(熟练之后,就好了,之前就用这种土方法) 对表单来说
就是一个参数,一次删一个 删完点右上角的勾,然后点小飞机一直重复此操作,直到,如果有参数被删掉就访问失败 然后请求头的话
长按就可以选择删除,就这么删一个,发送一下(右上角小飞机是发送)直到参数最简。 发送完还是(点击数据包-响应-预览) 正常就是"已赞过" 错误就是: "校正失败"--关键参数被删了 "账号未登入"--代表账号密码的参数被删了 经过5*1=劳动节天!! 终于参数最简为如下
什么?,你问我这些参数什么意思?,我不到啊,我只知道能用就行(我的准则) 然后把数据复制到post工具里面,搬过去的参数如下。
这就是成功了,在post工具请求成功就排除了偶然性, 然后把参数搬到php,一个参数对应一个参数,结果如下(需要导入我的curl包)
按照格式改就行了,没什么好说的,至于布置php服务器之类的,需要自己去寻找相关教程,本教程只适于能正常基础使用php的,学习php可以去网站"菜鸟编程" 最后就是一些替换参数以及get获取参数了,都没什么好说的 成品如下
下一期教程将演示如何获取提交的相关参数,做成完整的api 嗯呢,拜拜 (/^▽^)/ 本期视频有关的所有工具以及软件,均在下面链接可以获取 https://api.byuin.com/file/tools.zip