分享

利用Fiddler2的Custom Rules自动抓取App的TOKEN并记录到文件

 jinjiang9 2018-05-23
发布时间:2017-08-10 来源:未知 浏览:2513
背景:某App的token有时效性,大概生命周期只有一小时。因此爬虫中不能使用一个固定的token去抓数据,必须要定时获取新的token值。但token的产生过程复杂难以直接实现。
鲲之鹏的技术人员经过研究,最后采用了“曲线救国”的方法,通过程序模拟操作App(启动),定时产生新的token,然后利用Fiddler2捕获这个token并记录到指定文件中(爬虫定时读取这个文件获取新的token)。
用Fiddler2捕获App的数据包这个方法在我们之前的文章里已经多次提到,如果你还不熟悉,可以看看这里http://www./html/articles/20170116/134.html。今天我们重点讲的是如何让Fiddler2自动将捕获到的特定参数记录到指定文件中去。
这要归功于Fiddler2的Custom Rules功能,我们可以在Custom Rules中添加脚本(JavaScript)来实现自定义的功能。官网示例文档:http://docs./fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse
具体操作步骤如下:
第一步:启动Fiddler ScriptEditor。"菜单栏Rules -> Customize Rules...."如下图所示:
第二步:找到OnBeforeRequest()方法,插入如下代码:
  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)。测试结果如下图所示。
  •  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多