专栏首页测试开发专栏互联网人必备:推荐4款爬虫抓包神器

互联网人必备:推荐4款爬虫抓包神器

阅读全文大概需要 7 分钟。

1. 说之前

受疫情影响,相信大部分人仍然还是处于在家远程办公的状态,起初最简单的远程办公,就是打打电话,发发微信,我们每天都在做。后来有了一系列工具,比如企业微信、各种线上会议工具、在线文档等等,能够把同事之间配合的效率提升起来,突破物理意义上的限制,不用到办公室就能创造价值,在没法线下聚集的时候,让自己的工作不会中断。

但是在大多数情况下,内部协同办公只能解决内部效率问题。对于大多数企业、对于经营生意的老板们来说,办公的目的是为了对外和消费者连接,和客户连接,需要做生意,这样才能真正的办公起来。

换句话说,我认为远程办公的实质,除了让大家能够互相之间配合好、一起工作之外(意义不仅仅是单纯的内部协作),后续真正有价值的一定是对外,让企业员工能够和外部的消费者连接起来。

当然我们今天的重点,并不是聊远程办公,远程办公的效率和质量,核心还是在于自我管理的自驱力

公号也有一段时间没有发表过原创文了,中间虽然也穿插了一些推文,比如昨天为朱少民教授打Call,推荐的一篇关于:内功修炼:如何开展高效敏捷测试实践?但追溯上一篇真正意义上属于原创型的推文,还是对2019年公号的一个技术总结:2019年下,测试开发技术精选合集,为了回馈公号读者,本周起,和去年一样,保持每周至少一篇原创技术推文分享给大家。

在日常的工作中,无论是开发同学或是测试同学、运维同学,都少不了用到一些抓包工具,今天就给大家隆重推荐4款爬虫抓包神器

2. 聊一聊:爬虫抓包原理

爬虫的基本原理就是模拟客户端(可以是浏览器,也有可能是APP)向远程服务器发送 HTTP 请求,我们需要知道目标服务器的 HOST、URI、请求方法、请求参数、请求头、请求体。Web 网站通过 Chrome 浏览器可以找到这些信息。但是对于 APP 爬虫,就显得有些束手无策。这时候必须借用一些抓包工具来辅助我们分析APP背后的秘密。而抓包本质是引入多了一层中间人代理,如下图所示。

补充一个知识点,对于新手来说,需要区分抓包和爬虫是两个不同的概念:抓包是为了查看分析网络请求,是为了了解对方的过程。爬虫则是模拟网络请求,当了解对方后模拟请求获取数据的工具,两者相辅相成,先抓包分析,再程序模拟,就是爬虫的开发过程,以此来达到你爬虫的目的。

3. 抓包神器一:Fiddler

Fiddler 是 Windows 平台最好用的可视化抓包工具,也是大家最熟知的 HTTP 代理工具,功能非常强大,除了可以清晰的了解每个请求与响应之外,还可以进行断点设置,修改请求数据、拦截响应内容。

官网下载即可:https://www.telerik.com/fiddler

此外,还可以自定义规则,通过修改脚本,加入自己的特殊处理,不过因为它是 C# 编写的,如果你要写复杂的脚本,需要懂C#。

过滤器功能使得你可以通过正则表达式规则将你关心的请求显示出来,如果你只需要抓特定网站的数据,这个功能就显得非常有用,可以去除很多干扰信息。

Fiddler 的左下角有个命令行工具叫做 QuickExec,允许你直接输入命令,如上图的命令行指示。

常见的命令有:

help:打开官方的使用页面介绍,所有的命令都会列出来

cls:清屏

Select:选择会话的命令

?.png:用来选择 png 后缀的图片

bpu:截获 request

@ Host 高亮所有该主机的会话,如 @http://www.cnblogs.com/

=:等于指定请求方法 或者 状态码高亮显示,例如输入:=502

4. 抓包神器二:Charles

Charles 是一款支持跨平台的抓包工具,并且也是 macOS 平台下最好用的抓包分析工具之一,同样提供GUI界面,界面简洁,基本功能包括HTTP、HTTPS 请求抓包,支持请求参数的修改,最新的 Charles 4 还支持 HTTP/2。当然,也同时支持Windows 和 Linux, 不过这款工具是要收费的,免费试用 30 天,试用期过后功能受限。

Charles当前最新版本为4.5.6,官网地址如下:

https://www.charlesproxy.com

Charles 在线破解工具:

https://www.zzzmode.com/mytools/charles/

Charles也常用于一些简单的弱网模拟工具,打开Proxy->Throttle Settings,界面如下:

PS:除此之外,模拟弱网的工具常见的还有:Fiddler、FaceBook工具ATC弱网模拟。

5. 抓包神器三:AnyProxy

AnyProxy 是 阿里巴巴开源的 HTTP 抓包工具,基于 NodeJS 实现,优点是支持二次开发,可自定义请求处理逻辑,如果你会写JS的话,同时需要做一些自定义的处理,那么AnyProxy 是非常适合的。支持 HTTPS,提供了GUI界面。GitHub地址:https://github.com/alibaba/anyproxy

常用特性:

  • 支持https明文代理
  • 支持低网速模拟
  • 支持二次开发,可以用javascript控制代理的全部流程,搭建前端个性化调试环境
  • 提供web版界面,观测请求情况

anyproxy详细使用介绍:

https://www.npmjs.com/package/anyproxy/v/3.10.2

6. 抓包神器四:mitmproxy

它不仅是跨平台的,而且提供的是命令行交互模式,很有极(zhuang)客(bi)感,而且是由Python语言实现的,对于Pythoner来说,无疑是一大利好福利。mitmproxy主要包含了 3 款工具:

  • mitmproxy: 带交互的终端界面
  • mitmdump: mitmproxy 的命令行版本,类似于 tcpdump
  • libmproxy: 用于 mitmproxy/mitmdump 的库

GitHub 地址:https://github.com/mitmproxy/mitmproxy

mitmproxy官网:

https://mitmproxy.org/

mitmproxy文档介绍:

https://docs.mitmproxy.org/stable/

最后,分享一下,笔者目前最常用的抓包工具分别是Charles和mitmproxy这两款。

希望这篇文章能帮到你!更多干货文章请关注我们。

如有疑问,请文末留言,最后,公号「测试开发技术」后台回复Python, 免费领取Python学习教程。

声明:封面或正文部分图片来源于网络,如有侵权,请联系删除。

END

所有原创文章

第一时间发布至此公众号「测试开发技术」

长按二维码/微信扫码 关注

本文分享自微信公众号 - 测试开发技术(mikezhou_talk),作者:狂师

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

原始发表时间:2020-02-18

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一款Python实用神器,5 行 Python 代码 实现一键批量扣图

    今天给大家分享一款Python装逼实用神器,在日常生活或者工作中,经常会遇到想将某张照片中的人物抠出来,然后拼接到其他图片上去。专业点的人可以使用 PhotoS...

    测试开发技术
  • 教你如何快速打造个人专属博客(轻量、简易、高逼格)

    通常,一个技术点我们会使用,并不难,但是要做到让别人也能听懂我们讲得,还是需要一定的技巧和经验的。因此很多搞技术的工程师都喜欢写博客,一方面是给自己做笔...

    测试开发技术
  • 软件性能:Locust工具实战之开篇哲学三问

    在上一篇性能专题的文章:性能专题:性能测试实施全过程指南,已提前剧透告知了,从本篇开始,将结合服务端性能测试的两款常用工具进行实战操作介绍:Jmeter和Loc...

    测试开发技术
  • 在线IDE推荐

    首推https://c9.io,支持多种语言,不过我在使用的时候遇到过python编译不通过的问题,应该是产生了不必要的缩进和空格,但是在浏览器里很难检查出来,...

    gojam
  • Python 数据库操作 SQLAlchemy

    在运行过程中所有的的数据都存储在内存 (RAM) 中,「RAM 是易失性存储器,系统掉电后 RAM 中的所有数据将全部丢失」。在大多数情况下我们希望程序运行中产...

    keinYe
  • 千万纺织女工悲剧了,一台缝纫机器人可取代17名工人

    缝制简单的衣服是非常典型的重复性劳动密集型工作之一,似乎早在几年前就实现了自动化。但是要让机器人做到这一点却并不容易。衣服面料通常比较柔软,尤其是用来做T-sh...

    机器人网
  • Swift3.0 - 类和结构体的区别

    结论: 在数据量比较大的排序中,结构体排序的速度比较慢,因为结构体是值类型,排序的时候,需要大量的赋值运算。而对象只需要交换地址即可。

    酷走天涯
  • 12306自动刷票下单-下单

    进入下单界面了 https://kyfw.12306.cn/otn/confirmPassenger/initDc

    星星在线
  • 如何判断一个以太坊地址是不是合约?

    用户1408045
  • iOS安全基础之钥匙串与哈希

    本文最初是由Chris Lowe编写的,后来经过Ryan Ackermann(ios系统开发者)的修改,已经可以针对最新的Xcode 9.2,Swift 4,i...

    周俊辉

扫码关注云+社区

领取腾讯云代金券