GO语言实现的http抓包分析工具pproxy介绍
引言
web 开发和 API 开发中难免要详细分析 http 请求和响应信息。web 开发的话,浏览器提供了便利的工具,比如 chrome 和 IE 都带了 develop tool,而 firefox 更是有十分强大的 firebug,可以让 http 请求的所有秘密一览无遗。目前是 app 大流行的时代,想要观察 app 中得 http 请求的秘密,浏览器的工具和插件都无能为力,有不少本地化的软件可以很好的解决这个问题,Windows 平台下有大名鼎鼎的 Fiddler 和 HttpWatch,Mac 平台下有 Charles。Charles 是一个收费软件,价格不菲要 $50。钱还不是关键问题,作为一名 geek,当然想更向往开源,轻量的解决方案了,无意中发现 pproxy,简单使用了一下,觉得相当棒,可以做绝佳的替代方案。
比较
pproxy 和 Fiddler、Charles 最大的不同是,它是一个开源软件,使用 go 编写,代码托管在 github 上。因为开源,作为一名 geek,就可以通过阅读源代码对其工作机制一探究竟,如果发觉某些方面不能满足需求,可以直接向开发者提需求,也可以自己动手,丰衣足食,造福大众。
pproxy 的工作机制和本地化软件如 Fiddler、Charles 差别很大。Fiddler 和 Charles 是一个本地化软件,通常是安装在桌面电脑上,通过在桌面电脑建立 proxy,然后截获的 http 请求和响应数据,提供一个本地化的 UI 界面提供服务。而 pproxy 是一个服务端软件,通常安装在 Linux 服务器上(当然也是可以安装在桌面电脑上),在服务器上建立 proxy 截获 http 请求和响应数据,另外提供一个远程的基于 web (html5)的 UI 界面提供服务。
Fiddler UI 如下所示:
pproxy UI 如下所示:
使用
pproxy 使用比较简单,具体可以参考其使用说明 pproxy。 难得的是他的作者是中国人,所以说明都是中文的。
总结
pproxy 是一个开源的轻巧的 http 抓包分析工具,尤其适合 API http 请求分析,完全可以替换昂贵的收费工具,同时也可以探索其源码学习 GO 语言,学习 http 协议和分析方法。
相关推荐
-
Go语言程序查看和诊断工具详解
想必Java 的开发者没有不知道或者没用过 jps 这个命令的,这个命令是用来在主机上查看有哪些 Java 程序在运行的. 我刚用 Go 语言程序的时候也很苦恼,我部署在公司服务器上的 Go 程序,其他的同事由于不清楚就经常找不到. 那么 Go 语言有没有像 jps 这样的工具呢?当然有,不仅有,而且还是 Google 自己出品的,官方认证(这种问题 Google 不可能自己想不到啊).名称也跟 jps 很像,叫 gops. 安装 gops 并不包含在官方安装包中,不属于标准工具.需要手动获取.
-
GO语言实现的http抓包分析工具pproxy介绍
引言 web 开发和 API 开发中难免要详细分析 http 请求和响应信息.web 开发的话,浏览器提供了便利的工具,比如 chrome 和 IE 都带了 develop tool,而 firefox 更是有十分强大的 firebug,可以让 http 请求的所有秘密一览无遗.目前是 app 大流行的时代,想要观察 app 中得 http 请求的秘密,浏览器的工具和插件都无能为力,有不少本地化的软件可以很好的解决这个问题,Windows 平台下有大名鼎鼎的 Fiddler 和 HttpWatc
-
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
背景说明 感觉微信公众号算得是比较难爬的平台之一,不过一番折腾之后还是小有收获的.没有用Scrapy(估计爬太快也有反爬限制),但后面会开始整理写一些实战出来.简单介绍下本次的开发环境: python3 requests psycopg2 (操作postgres数据库) 抓包分析 本次实战对抓取的公众号没有限制,但不同公众号每次抓取之前都要进行分析.打开Fiddler,将手机配置好相关代理,为避免干扰过多,这里给Fiddler加个过滤规则,只需要指定微信域名mp.weixin.qq.com就好:
-
易语言制作网截抓包工具的代码
常量数据表 .版本 2 .常量 编码常量, "<文本长度: 10797>", , 名称:编码_GB2312 英文名称:Encoding_GB2312 类型:文本型 值:"GB2312" 列举各种编码类型 全局变量表 .版本 2 .全局变量 系统配置路径, 文本型 网截抓包工具 .版本 2 .支持库 eNetIntercept .支持库 eGrid .支持库 iconv .支持库 iext .支持库 iext2 .程序集 主程序集 .程序集变量 服务安装,
-
Android手机抓包步骤
android抓包准备 1. Android手机需要先获得root权限.一种是否获得root权限的检验方法:安装并打开终端模拟器(可通过安卓市场等渠道获得).在终端模拟器界面输入su并回车,若报错则说明未root,若命令提示符从$变#则为rooted:2. 如果Android手机尚未root,可通过superoneclick或其它方法进行root处理(需要先安装Microsoft .NET Framework).Superoneclick刷root权限教程:(http://soft.shouji
-
网络安全渗透测试小程序抓包流程步骤详解
目录 小程序测试流程 搜索目标小程序 小程序主体信息确认 小程序包获取 PC端 windows端获取小程序包流程 移动端 解包 调试 抓包 小程序测试流程 分为两个方面,解包可以挖掘信息泄露问题.隐藏的接口,抓包可以测试一些逻辑漏洞.API安全问题.两者结合起来就可以边调试边进行测试,更方便于安全测试. 搜索目标小程序 目标搜索不能仅仅局限于主体单位,支撑单位.供应商.全资子公司等都可能是入口点,所以小程序当然也不能放过它们. 小程序主体信息确认 查看小程序账号主体信息,否则打偏了花费了时间不说
-
安卓APP测试之使用Burp Suite实现HTTPS抓包方法
APP的测试重点小部分在APP本身,大部分还是在网络通信上(单机版除外).所以在安卓APP测试过程中,网络抓包非常重要,一般来说,app开发会采用HTTP协议.Websocket.socket协议,一般来说,HTTP协议最多,Websocket是后起之秀,socket最少,而针对HTTP和websocket,Burp Suite工具是最适合不过的工具了.但是在遇到了app使用SSL或TLS加密传输(https)的时候,由于证书不被信任,直接导致网络通信终端,抓包失败.本文介绍如何使用Burp s
-
go语言处理TCP拆包/粘包的具体实现
目录 part 1 part 2 part 3 part 1 最近在学习go自带的rpc,看完了一遍想着自己实现一个codec,也就是自定义消息的序列化和反序列化.消息的序列化和反序列化涉及到两步: 1.从网络中读取数据和将数据写到网络中: 2.根据拿到的二进制数据反序列化以及把现有的对象序列化成二进制数据.而这个过程中就需要处理TCP的拆包粘包了. TCP的拆包/粘包也算是网络编程中一个比较基础的问题了,具体的问题含义和解决方式也不再详细描述了.虽然作为实现应用层逻辑的程序员可能根本不需要关心
-
Android App如何防止抓包
目录 前言 正文 补充:使用证书校验 总结 前言 App安全非常重要,尤其是数据安全.但是我们知道通过Charles等工具可以对App的网络请求进行抓包,如果我们的数据没有进行加密,这样这些信息就会被清除的提取出来,会被不法分子进行利用.保证数据安全有很多种方法,今天简单聊一聊如何通过简单几步防止抓包. 正文 当我们进行网络请求的时候,一般通过URL的openConnection来建立连接,代码如下: URLConnection conn = url.openConnection() 其实ope
-
Go 语言入门学习之时间包
目录 1.前言 2.日期和时间的表示 当前时间 日期函数 如何在Golang中获取当前UNIX的时间戳 3.访问时间组件的方法 1.前言 时间和日期对于任何编程语言来说都是一个非常重要的包. GO 语言 提供了 time 包来测量和显示时间.既可以根据所选时区获取当前时间,又可以使用 time 包添加当前时区的持续时间等. 2.日期和时间的表示 time 包提供了时间类型,用来表示时间中的一个特定时刻,主要有以下几个函数: Now() 函数:返回当前时区的当前时间 Dat
-
Go 语言入门之net/url 包
目录 引言 URL 格式 Go url 包函数使用格式 如何使用 URL 包 在 Golang 中对查询字符串进行 URL 编码 在 Golang 中对多个查询参数进行 URL 编码 在 Golang 中对路径段进行 URL 编码 通过对各个部分进行编码来构建完整的 URL 在 Golang 中解析 URL 处理相对路径 解析空格 判断绝对地址 解析端口 引言 在 Golang 中,将 URL 打包用于从服务器获取数据非常重要.只需了解您是否正在处理任何应用程序并且您想从任何外部位置或服务器获取
随机推荐
- Prototype的Class.create函数解析
- IOS开发基础之二维数组详解
- Linux中的搜索文件命令
- JSP、Servlet中get请求和post请求的区别总结
- 对python中return和print的一些理解
- ASP.NET获取各级目录Server.MapPath详解全
- 老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
- PHP程序中使用adodb连接不同数据库的代码实例
- PHP中对数组的一些常用的增、删、插操作函数总结
- Python实现提取谷歌音乐搜索结果的方法
- ES6扩展运算符用法实例分析
- Js 获取Gridview选中行的内容操作步骤
- js 禁止选择功能实现代码(兼容IE/Firefox)
- 分页存储过程代码
- Oracle轻松取得建表和索引的DDL语句
- java 获取当前路径下的所有xml文档的方法
- HTML长文本截取含有HTML代码同样适用的两种方法
- Listview加载的性能优化是如何实现的
- Java设计模式之命令模式(Command模式)介绍
- Zend Studio 无法启动的问题解决方法