利用Fiddler的Custom Rules自动抓取App

本文原创作者:鲲之鹏( http://www.site-digger.com)

本文原始链接: http://www.site-digger.com/html/articles/20170810/137.html


背景: 某App的token有时效性,大概生命周期只有一小时。因此爬虫中不能使用一个固定的token去抓数据,必须要定时获取新的token值。但token的产生过程复杂难以直接实现。

鲲之鹏的技术人员经过研究,最后采用了“曲线救国”的方法,通过程序模拟操作App(启动),定时产生新的token,然后利用Fiddler2捕获这个token并记录到指定文件中(爬虫定时读取这个文件获取新的token)。

用Fiddler2捕获App的数据包这个方法在我们之前的文章里已经多次提到,如果你还不熟悉,可以看看这里 http://www.site-digger.com/html/articles/20170116/134.html 。今天我们重点讲的是如何让Fiddler2自动将捕获到的特定参数记录到指定文件中去。

这要归功于Fiddler2的Custom Rules功能,我们可以在Custom Rules中添加脚本(JavaScript)来实现自定义的功能。官网示例文档: http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse

具体操作步骤如下:

第一步: 启动Fiddler ScriptEditor。"菜单栏Rules -> Customize Rules...."如下图所示:

 

第二步: 找到OnBeforeRequest()方法,插入如下代码:

view plain copy to clipboard print ?

  1. // 首先判断请求域名是否是自己感兴趣的,以及URL中是否含有自己感兴趣的特征字符串。如果是,则将该请求的URL和QueryString记录到日志文件 "c:/fiddler-token.log"中。   

  2. if  (oSession.HostnameIs( "某域名" ) && oSession.uriContains( "特征字符串" )){  

  3.          var  filename =  "c:/fiddler-token.log" ;  

  4.          var  curDate =  new  Date();  

  5.          var  logContent =   "["  + curDate.toLocaleString() +  "] "  + oSession.PathAndQuery +  "\r\n" ;  

  6.          var  sw : System.IO.StreamWriter;  

  7.          if  (System.IO.File.Exists(filename)){  

  8.                 sw = System.IO.File.AppendText(filename);  

  9.                 sw.Write(logContent);  

  10.         }  

  11.          else {  

  12.                 sw = System.IO.File.CreateText(filename);  

  13.                 sw.Write(logContent);  

  14.         }  

  15.         sw.Close();  

  16.         sw.Dispose();  

  17. }  

 

第三步: 保存脚本并测试(保存后立即生效,无需重启Fiddler)。测试结果如下图所示。




在每篇转发的文章后面加上如下信息(鲲之鹏要加上超链接,链接到http://www.site-digger.com):

说明:该文章为鲲之鹏(http://www.site-digger.com)原创文章 ,您除了可以发表评论外,还可以转载到别的网站,但是请保留源地址,谢谢!!(尊重他人劳动,我们共同努力)


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30303165/viewspace-2158420/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30303165/viewspace-2158420/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值