公众号后台回复“图书“,了解更多号主新书内容
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

作者:pk哥

来源:Python知识圈

这半个月,pk 哥 在 B 站上传了两个关于爬虫的视频,很多 B 站小伙伴私信我,那些请求参数有什么意思,怎么更快的抓包获取这些请求?作为爬虫的前戏工作:调试和抓包,是很重要的。今天我就详细的给大家分享一下浏览器 F12 开发者调试工具和 APP 抓包的常见用法。

网页抓包

首先对于网页爬虫来说怎么抓包呢?很简单,我们直接在网页上右键点击检查或者快捷键 F12 就可以进入开发者调试工具。如果页面是经过请求接口而返回的数据的话,在 Network 中,它就会产生请求的数据,我们在这里都能捕捉到。

我们还是以之前的 P 站为例,我们点开一个接口,这个接口分为两部分,一个是请求的数据,一个是返回的数据,请求的信息主要在 Headers 里面,它主要有以下几部分,第 1 部分,General 里面主要包含了请求的链接 URL 以及他的请求方式,用的多的就是 get 和 post 了,还有请求状态码,200 表示请求接口成功。

我们来看一下 Request Headers 请求头的信息,我讲一下请求头里很重要的几个请求参数。

第一个是 Cookie,什么是cookie呢?Cookie是网站储存用户的相关的加密数据,这些数据是网站为了识别用户的身份,第一次登录的时候,你的 cookie 信息会被返回并且被网站服务器保存,请求第二个页面的时候,请求信息会带上 cookie,这样网站就能识别用户身份。当然,Cookie储存是有时效的,超过规定的时候后,cookie就失效了,网站会让你重新登录重新获取新的 cookie。所以对于需要登录才能看到数据的网站,请求接口时 cookie 参数是必须要给出的,不然就无法请求数据。

第 2个 请求参数是:Referer,这个参数是告诉网站服务器,你是从哪个页面跳转过来的,如果这个参数为空或者网址不是服务器白名单的网址,那服务器可能很快就判断你是异常请求或者爬虫了。

第 3 个比较重要的就是 user-agent,是网站用来检测你的请求是人为的还是真实的浏览器行为,我们加入 user-agent 就是为了模拟成真实的浏览器,从而“骗”过网站服务器,你不加的话,就相当于在你在人家服务器里“裸奔”,你说你在别人家地盘搞颜色,服务器不封你封谁呢?

最后是 query string parameters,因为我们这个是 get 请求,这些参数也就是请求 url 里问号后面要带的参数,比如上次讲的插画的展示模式 mode,下滑加载的页数 P,这些可以统一把它放在一个元组里。

 params = (('mode', 'rookie'),('content', 'illust'),('p', p),('format', 'json'),)

那这些分析出来了之后。那我们就是通过 requests 库来请求接口返回数据了。

response = requests.get(url, headers=headers, params=params)

你说刚才讲的那些 cookie、user-agent 等信息需要一个个自己拼写转换成 Python 代码格式也是挺繁琐,有没有更快的办法呢?答案是有的,有大佬已经制作的转换的网站了,只需 3 秒就可以搞定这些参数。

第 1 秒,copy 请求接口的 cURL。

第 2 秒,将刚才 copy 的 cURL 粘贴到转换网站,语言选择 Python(默认是Python,还支持其他的语言,共支持 14 种语言)。

https://curl.trillworks.com/

第 3 秒,把转换好的 Python requests 复制到编辑器里,headers 和 params 的详细信息都有了,是不是很快,只用 3 秒!

APP 抓包

上面分享网页抓包的方法,那怎么抓取 APP 的请求数据呢?这个我们需要下载第三方软件去搞定了,我常用的有 Charles 和 Fiddler 软件,这两款工具主要功能差不多的,任选一款就好,也听说过 Fiddler 比 charles 强大那么一点点,但是我更喜欢 Charles,因为它的界面展示的接口有层级目录感,而 Fiddler 所有接口都是并列的。

所以接下来我以 Charles 为例,讲讲 Charles 是怎么抓包的。

Charles 基础设置

在开始用 Charles 调试抓取网页或者 APP 前,我们需要对 Charles 做一些基础的设置。首先我们得在 Proxy-Proxy Setting 中设置代理端口号,默认为 8888,一般用默认的就行,除非和电脑上其他端口有冲突,然后勾选下面的容许抓取 HTTP 域名的选项。

Charles 抓包网页

Charles 不仅能抓包 APP,电脑网页也是可以抓取的,下面这张图就是我抓取的 bilibili 动画主页的请求。

抓取电脑网页前,我们只需要把 Proxy 里的 macOS Proxy 选项(Window系统显示的是 Windows Proxy)勾上就可以捕捉网页端的请求了。

Charles 下面我们可以用筛选功能让它只显示我们需要抓取的域名就行。

Charles 抓包APP

网页能抓,APP 当然也不在话下,但在抓取前需要做下简单的设置。

安装证书到移动设备

首先,我们让手机和电脑要在同一局域网下,先查看下电脑的 IP,Windows 电脑在 cmd 里输入 ipconfig 命令查看 IP,Mac 电脑在终端输入 ifconfig 查看 IP,手机的无线网里设置代理,填上刚查到的 IP 和端口号 8888。

安卓手机是在长按已连接的 wife,啊呸,wifi,勾上显示高级选项,把代理设置为手动,然后把上面电脑上的 ip 和 Charles 设置的端口号输入到主机名和端口里,点击保存。

如果手机是第一次和 Charles 连接,Charles 上会有设备接入弹窗提示,选择 Allow 同意即可。

连上之后,我们点击 Help-SSL Proxying-Install Charles Root Certificate on a Mobile Devices or Remote Browser,这时会有个弹窗。

弹窗的意思就是让在安卓设备或 ios 设备或安卓模拟器设置好代理后,然后在浏览器里输入 chls.pro/ssl 网址 去下载安装证书。

charles 下方还有一段提醒说的是 ios 10 以上的手机安装完证书后,需要在设置-通用-关于本机-证书信任设置,把刚才安装的证书信任下。

我这操作的是苹果手机,安卓手机没有信任这一步。

证书都安装完成后,操作手机上的 APP,就会抓到大量的数据信息了。

抓取数据显示 unknown 的解决办法

假如你抓取的全部数据出现 unknown 的情况,比如下面我是打开手机的哔哩哔哩APP,抓取的的全是 unknown。

这时我们需要在 Proxy-SSL Proxy Settings ,在 Host 里输入需要抓取的主域名 app.bilibili.com 和端口 443,清空抓取的数据再次打开哔哩哔哩 APP,就能看到抓取的数据了。

3秒转换成 Python请求

还是上面一样方法,3秒直接转换成我们需要的 Python 请求头。

在接口上右键 copy cURL Request

粘贴到转换网站中

headers 信息和 cookies 信息就轻松转换过来了。

Charles 其他功能

Charles 还有其他的功能,比如模拟网速,这个测试同学可能会经常用到,手机连上 Charles 代理后,在 Proxy-Throttle Settings 中设置不同的网速,可以设置弱网的环境,然后点击 start Throttling 开启,这样就可以测试 APP 在弱网情况下的反应了。

对于测试同学来说,Charles 还有个好用的功能:断点。

什么是断点呢?开发的时候,经常需要对代码进行 debug 断点调试,让程序中断在需要的地方,从而方便其分析。Charles 中的断点功能也是类似的。

这个功能主要是在测试过程中,对于有些极端的数字我们无法模拟的情况下,我们给这个接口的主域名上设置断点,修改该接口的请求或者返回信息也就是假传圣旨后再发给服务器。

举个例子,比如测试贷款业务,显示贷款金额,比如最大金额是 1 个亿,假如测试中这个数据不好造,但我们需要测试下最大金额时页面显示的情况,是否会被截断或者不显示,这时可以借助断点,改变金额后返回给页面,页面显示的就是你修改之后的数据了。

最后,断点结束后,记得关闭断点,还有,电脑上的 Charles 抓包工具关闭时,记得将手机上的代理关闭,否则手机会上不了网。

以上就是网页抓包调试和 Charles 抓包的主要功能了,这些只是爬虫的前期工作,听了 pk哥今天的分享,大家应该都能 3 秒搞定爬虫前的请求参数了。

好了,以上就是今天的全部分享内容了,求点赞,求在看你,求转发,你也可以评论区留言讨论。

◆ ◆ ◆  ◆ ◆麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗

求你了,别再问我网页或APP抓包了!相关推荐

  1. 面试官问我会不会APP抓包,我..

    点击"小詹学Python",选择"置顶"公众号 重磅干货,第一时间送达 本文转载自咸鱼学Python,禁二次转载 标题这个题目应该是我面试答的最好的一题了,所以 ...

  2. 网页或APP抓包请求参数有什么意思,怎么更快的抓包获取这些请求

    网页抓包 首先对于网页爬虫来说怎么抓包呢?很简单,我们直接在网页上右键点击检查或者快捷键 F12 就可以进入开发者调试工具.如果页面是经过请求接口而返回的数据的话,在 Network 中,它就会产生请 ...

  3. Fiddler 网页采集抓包利器__手机app抓包

    用curl技术开发了一个微信文章聚合类产品,把抓取到的数据转换成json格式,并在android端调用json数据接口加以显示: 基于weiphp做了一个掌上头条插件,也是用的网页采集技术:和一个创业 ...

  4. 【Fiddler】网页采集必备抓包利器

    最近这段时间,网页采集方面的工作做得比较多.用curl技术开发了一个微信文章聚合类产品,把抓取到的数据转换成json格式,并在android端调用json数据接口加以显示:基于weiphp做了一个掌上 ...

  5. python爬虫登录微博_【新手学Python爬虫】微博网页PC端抓包分析和模拟登录

    本帖最后由 杀猪用牛刀 于 2020-4-2 23:59 编辑 首先我是一个python爬虫的新手,模拟登录也是我看b站模拟登录教学加自己琢磨完成的,其中很多分析很粗糙,还希望大家多多包涵:lol 话 ...

  6. 微信网页版消息 抓包

    [获取全部联系人列表] https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?r=1388976086734 (每次登陆[FromUserName ...

  7. 求你们不要再问我模板了,这些手机APP网站模板全给你们!

    求你们不要再问我模板了,这些手机APP网站模板全给你们! wap菜单电脑IT科技响应式网站模板 链接: https://pan.baidu.com/s/1Rp77B7S5DsRI8FrrH-J5Cg ...

  8. c语言减治法求a的n次方算法,拜托,面试别再问我斐波那契数列了!!!

    面试中,问得比较多的几个问题之一,求斐波那契数列f(n)? 画外音:姐妹篇 <拜托,面试别再问我TopK了!!!> <拜托,面试别再让我数1了!!!> 什么是斐波那契数列? 斐 ...

  9. 拜托,面试别再问我时间复杂度了!!!

    最烦面试官问,"为什么XX算法的时间复杂度是OO",今后,不再惧怕这类问题. 快速排序分为这么几步: 第一步,先做一次partition: partition使用第一个元素t=ar ...

最新文章

  1. 中学计算机课 打字教案,初中信息技术《打字练习—易语言应用》教案
  2. php代码规范的书籍,php基本代码规范——PSR-1
  3. Javascript中的对象查找【转】
  4. 无惧秋招,您的NLP算法工程师魔鬼训练计划请查收
  5. VMWare serve 2.0 进入 RHEL Linux rescue模式
  6. 教你如何在STM32中使用DSP指令
  7. JDK8新特性(六)之Stream流的forEach()方法
  8. Atitit uuid 的概念与实现与最佳实践总结 目录 1. 概念与组成 1 1.1. 在空间(Space)与时间(Time)上的唯一性 1 1.2. UUID 1 1.3. 组成 2 1.3.1
  9. 搜狗状告腾讯拼音输入法不正当竞争索赔2051万
  10. HEGERLS供应定做层板仓储货架 防腐防锈库房立体层板货架
  11. 梧桐数据宣布获得千万级Pre-A轮融资
  12. php yield 携程,爬取携程国内地区攻略评论
  13. html 取消settimeout,Javascript – setTimeout关闭问题
  14. 购买服务器和域名到搭建网站
  15. Python协议攻击脚本(一): Scapy的使用
  16. linux screen窗口 jupyter notebook 激活环境后无法切换到指定虚拟环境
  17. matlab 图像采集,基于 Matlab 的深度图像采集与处理
  18. Intellij idea Ultimate版本学生免费注册使用步骤以及Github学生包
  19. 段永平:不用老提“双赢”,不占别人便宜就行
  20. 安装open_clip时提示错误 请求大佬们帮助

热门文章

  1. java毕业生设计员工工资管理系统计算机源码+系统+mysql+调试部署+lw
  2. 印章识别印章还原印文识别印章定位ocr
  3. 更换硬盘后的克隆硬盘
  4. mysql 易语言修改时间_易语言系统日期修改方式
  5. 数据库优化—— sql 语句
  6. 小米5s的位置服务器,小米手机NFC在哪里?告诉你小米手机NFC位置(包括小米5/5s/6/MIX2/Note3)...
  7. Word / PowerPoint Alt + = 快捷键失效问题
  8. xd怎么做页面滑动_XD教程 | 如何在XD中制作拖拽手势”
  9. matlab 三维 作图 坐标轴_怎么设置三维图的坐标轴在任意位置
  10. 腾讯盛大百度版咆哮体