Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当程序连接Charles的代理访问互联网时,Charles可以监控这个程序发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。
Charles主要功能:
-
支持SSL代理。可以截取分析SSL的请求。
-
支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
-
支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
-
支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
-
支持重发网络请求,方便后端调试。
-
支持修改网络请求参数。
-
支持网络请求的截获并动态修改。
-
检查html,CSS和RSS内容是否符合W3C标准。
下面是过滤腾讯视频广告的步骤
1.首先在Proxy-->Proxy Settings中设置代理服务器的端口并允许所使用http代理
可以把Proxy下面的Windows Proxys关掉,不然会监控电脑的http请求.会有很多请求.
2.在手机wifi中使用代理,代理为使用charles电脑的ip和刚才配置的端口(888),这个操作必须让电脑和手机在同一局域网内,不然手机找不到ip。
这样子电脑就可以监控手机的请求了.
3.下面用手机上的腾讯视频随便点击一个视频,charles监控到这几个请求.
4.点开每一个请求查看数据
最终找个一个返回json数据的请求,这个请求返回了adList以及一系列的广告url,复制这些url在浏览器中就可以看到广告啦,但是我们并不是来看广告的.
5.过滤广告的方法有两种
方法一
第一种是右键那条请求-->Map Remote,然后配置如下
将这条请求转发到127.0.0.1:12345上,实际上12345端口没有开.所以请求一定会出错就会出现这种状况
发现不是请求而是请求,请求转发到请求不到的ip和端口上,这样就无法获取广告的链接也就无法播放广告,而强大的播放器自然不会因为广告请求不到就崩掉了,它会选择继续播放视频,然后这个就可以了.
方法二
选择Tools-->Rewrite
配置一下要重写的请求路径
再配置一下要重写的内容重写response里面adList为adList111,这样是为了请求到这个json数组后找不到adList这个属性从而无法解析。
最后发现请求的结果从这个
变成了这个