专栏首页毛利学Python爬虫篇|不会抓包,谈何爬虫(七)

爬虫篇|不会抓包,谈何爬虫(七)

http原理

所谓的http代理,其实就是代理客户机的http访问,主要代理浏览器访问页面。 代理服务器是介于浏览器和web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

fiddler的使用

抓包工具抓取HTTPS的包的时候跟HTTP的直接转发是不同的。所以我们需要配置HTTPS的证书。

打开后选择HTTPS,勾选上这个选项,然后勾选上下方出现的两个选项。最后再将弹出的窗口都选择yes

设置
  • Capture HTTPS CONNECTs 捕捉HTTPS连接
  • Decrypt HTTPS traffic 解密HTTPS通信
  • Ignore server certificate errors 忽略服务器证书错误
  • all processes 所有进程
  • browsers onlye 仅浏览器
  • nono- browsers only 仅非浏览器
  • remote clients only 仅远程链接
  • Trust Root Certificate(受信任的根证书) 配置Windows信任这个根证书解决安全警告
  • Allow remote computers to connect 允许远程连接
  • Act as system proxy on startup 作为系统启动代理
  • resuse client connections 重用客户端链接

操作界面

  • 界面含义

1 给session添加一个注释 2 Replay:将目标session再发送一次 3 删除session 4 将断点的session恢复执行 5 Decode:将传输的数据解码成容易阅读的格式 6 Find:查找session 7 Save:将session保存成本地文件 8 Clear Cache:清除缓存

Session窗口

  • Session的序号
  • Result:请求的响应状态码
  • Protocol:请求的协议类型
  • Host:域名
  • URL:请求的url
  • Body:响应体的大小
  • Caching:缓存方式
  • Content-Type:响应的数据类型
  • Process:发起请求的进程
  • Comments:注释
  • 同时,每一个session都有不同的颜色,不同的颜色代表不一样的session类型。

Inspectors标签页

Filters选项

Find查找

命令行查找

在Fiddler中同样也是可以使用命令行来进行搜索的,在图中的黑框中输入命令即可。

请求 (Request) 部分详解

名称

含义

Headers

显示客户端发送到服务器的 HTTP 请求的,header 显示为一个分级视图,包含了 Web 客户端信息、Cookie、传输状态等

Textview

显示 POST 请求的 body 部分为文本

WebForms

显示请求的 GET 参数 和 POST body 内容

HexView

用十六进制数据显示请求

Auth

显示响应 header 中的 Proxy-Authorization(代理身份验证) 和 Authorization(授权) 信息

Raw

将整个请求显示为纯文本

JSON

显示JSON格式文件

XML

如果请求的 body 是 XML格式,就是用分级的 XML 树来显示它

响应 (Response) 部分详解

名称

含义

Transformer

显示响应的编码信息

Headers

用分级视图显示响应的 header

TextView

使用文本显示相应的 body

ImageVies

如果请求是图片资源,显示响应的图片

HexView

用十六进制数据显示响应

WebView

响应在 Web 浏览器中的预览效果

Auth

显示响应 header 中的 Proxy-Authorization(代理身份验证) 和 Authorization(授权) 信息

Caching

显示此请求的缓存信息

Privacy

显示此请求的私密 (P3P) 信息

Raw

将整个响应显示为纯文本

JSON

显示JSON格式文件

XML

如果响应的 body 是 XML 格式,就是用分级的 XML 树来显示它

断点

设置断点是Fiddler最强大的功能之一,在设置好断点后,Fiddler会捕捉所有经过的消息,我们可以任意修改HTTP请求信息,包括Host、Cookies或表单的数据。可以设置断点修改request,也可以设置断点修改response。

断点方式有两种,一种是通过菜单栏设置全局的断点,一种是通过命令行设置指定的断点

全局断点

在菜单栏中选择Rules > Automatic Breakpoints,即可选择断点方式。有两个选择,分别是在请求往服务器发送的时候暂停,和在响应返回到客户端的时候暂停。

指定断点

指定断点需要输入指定的命令来进行断点: bpu:在指定网页发起请求后暂停。如:bpu www.baidu.com bpafter:在指定网页返回响应时暂停。 bpm:中断指定请求方式的请求。如:bpm get bps:中断指定状态码的session。如:bps 200

app抓包

1、安装fiddler,并且进行配置: Tools >> options >> connections >> 勾选 allow remote computers to connect

2、查看本机ip地址: 在cmd窗口中,输入 ipconfig ,查看 以太网 ,可以看到 IPv4 地址……………:192.168.0.104 这个192.168..**(192.168.0.104) 就是你的本机IP

3、确保手机连接了wifi,并且和电脑是在同一个局域网, 在手机中,打开浏览器,访问 http://192.168.0.104:8888 IP:是第二步查看到的ip地址,替换成你自己的IP port:8888是你在fiddler中配置的 注意:有些浏览器会显示打不开,更换其他浏览器就可以了

4、访问成功的话,会显示:

Fiddler Echo Service
......
......
This page returned a HTTP/200 response
.To configure fiddler as a reverse proxy instead of seeing this
 page, see Reverse Proxy Setup
.You can download the FiddlerRoot certificate

5、点击 FiddlerRoot certificate , 下载 证书

6、安装 证书(不同的手机不同的方式)

  • 部分手机可以直接点击 安装
  • 部分手机需要 设置 >> wifi(或WLAN) >> 高级设置 >> 安装证书 >> 选中刚刚下载的 证书文件 FiddlerRoot.cer >> 确定
  • 设置(Settings) >> 更多设置 >> 系统安全 >> 从存储设备安装
  • 为证书命名 , 输入自己喜欢的名字,譬如 fiddler ,确定 , 显示 证书安装完成
  • 安装完成后,在 设置(Settings) >> 更多设置 >> 系统安全 >> 信任的凭证 >> 系统和用户2个tab页 >> 用户 >> 可以查看到 DO_NOT_RUST_FiddlerRoot

PS: 不安装证书,抓取http的数据是没问题的,但是抓取不了https的数据

7、手机设置代理(不同的手机不一样) 手机设置 >> wifi(或WLAN) >> 选中连接的网络 >> 代理 >> 手动 主机名:192.168.0.104 这个是刚刚在 cmd 中查看到的电脑的 IP 端口 :8888 不使用网址:这个不用理会 修改完成后,确认

8、打开 fiddler 的抓包,然后在手机端运行要抓包的app,会查看到fiddler中已经可以抓到app的数据了

注意: 1、大部分app都可以直接抓包 2、少部分app没办法直接获取,需要 wireshark、反编译、脱壳 等方式去查找加密算法 3、app抓包一般都是抓取到服务器返回的json数据包

本文分享自微信公众号 - 毛利学Python(sen13717378202)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android Java 动态修改 CheckBox 样式

    和尚我一直在处理动态配置页面颜色方面的工作,包括各布局,各控件等,而和尚我却在最常用最基本的 CheckBox 选项框这个控件却栽了跟头,折腾了好久...

    阿策
  • Android Kotlin/Java 动态设置 shape/drawable 等状态效果

    和尚我最近遇到一个小需求,程序里面有个别页面,需要动态的调整某个页面的样式,包括一键变灰等效果。 以前页面是用 shape 和 draw...

    阿策
  • 什么是AJAX?

    通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

    公众号php_pachong
  • 初识 RxPermissions

    和尚曾经在面试 Demo 中处理过权限方面的问题,当时的权限判断都是自己来处理的,不够灵活方便,封装的还远远不够,这次和尚初步尝试一下 RxPerm...

    阿策
  • 【Flutter 专题】 05 图解修改应用名称及图标

    和尚有个臭毛病就是新建的项目都会优先更改一下项目名称,按照自己喜欢的名字定义,当然包括 Logo 也修改一下。刚接触 Flutter,语法都还没有了...

    阿策
  • Android 基础动画之 scale 渐变缩放

    和尚最近在学习 ViewPager 的小动画,说来惭愧,工作这么久了一直没有认真了解过动画这部分,今天特意学习一下 Android 的基本动画。

    阿策
  • springCloud当中Eureca消费者Consumer的部署

    3.消费者的部署: 做个普通的maven project,quickstart archetype。改成jdk.8。过去我们都是: @Service publ...

    马克java社区
  • Spring常用注解大全,收藏一波!!!

    @Configuration 声明当前类为配置类,相当于xml形式的Spring配置(类上)

    程序员追风
  • Android 基础动画之 alpha 透明度 / translate 平移 / rotate 旋转

    和尚最近在学习 Android 基本动画,前两天整理了一下相对复杂的 Android 基础动画之 scale 渐变缩放,今天继续学习整理其他三种基本...

    阿策
  • 前端关键技术点杂烩,这些你必须知道

    这里总结一下 WEB 前端面试的常见问题,同时这些问题也是对一些基础的技术概念和思想的理解。对这些基本知识的掌握程度和深度决定了你的技术层级。高级工程师是必须掌...

    用户5997198

扫码关注云+社区

领取腾讯云代金券