吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4321|回复: 26
收起左侧

[Python 转载] FiddlerScript配合爬虫

  [复制链接]
qianshang666 发表于 2021-6-23 14:40
本帖最后由 qianshang666 于 2021-6-23 14:43 编辑

前言

想在这里给大家分享一个FiddlerScript配合爬虫的方法

工欲善其事,必先利其器

要准备Fiddler,这个大家随便百度一下就有
python环境,而且要会安装python库

Fiddler准备

1.找到Fiddler中的FiddlerScript,会发现里面有很多代码,然后大家找到这个
Fiddler配置.png
2.点击一下就可以定位过去,然后把我下面发的代码复制在这里,效果就是这样的。
Script代码.png
3.FiddlerScript代码

//过滤无关请求,只关注特定请求
if (oSession.fullUrl.Contains("www.kancloud.cn/cyyspring/test"))
{

   var html = oSession.GetResponseBodyAsString()
   if(html.Contains("href")){
      //数据统计开始:把内容通过ajax http发送其它地方
      var _xhr = new ActiveXObject('Microsoft.XMLHTTP');
      var url = 'http://127.0.0.1:8000/sendData';
      //发送的数据参数
      var jsonString = oSession.GetResponseBodyAsString();
      var requestHeaders = oSession.oRequest.headers.ToString();
      var responseHeaders=oSession.oResponse.headers.ToString();

      var str='{}';//构造自己的JSON http请求的信息及返回的结果
      var data = Fiddler.WebFormats.JSON.JsonDecode(str);

      data.JSONObject["requestHeaders"]=requestHeaders;
      data.JSONObject["responseHeaders"]=responseHeaders;
      data.JSONObject["responseBody"] = jsonString;
      data.JSONObject["url"] = oSession.fullUrl;
      data.JSONObject["response_code"] = oSession.responseCode;

      jsonString = Fiddler.WebFormats.JSON.JsonEncode(data.JSONObject)

      FiddlerObject.log(jsonString);

      _xhr.onreadystatechange=function(){
            if (_xhr.readyState==4){
               FiddlerObject.log(_xhr.responseText);
            }  
            };
      _xhr.open('POST', url, true);
      _xhr.send(jsonString);
      //----数据统计结束-----
   }else{
      // 弹窗报错
      FiddlerObject.alert("抓取出错!");
   } // if end

} // if controll end

python代码

import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel
import time

class Item(BaseModel):
    url:str
    response_code:str
    responseBody:str
    requestHeaders:str
    responseHeaders:str
    requestCookie:str
    responseCookie:str

app = FastAPI()
@app.post("/sendData")
async def post_info1(request_data:Item):
    print("url:", request_data.url)
    print("response_code:", request_data.response_code)
    print("responseBody:", request_data.responseBody)
    print('requestHeaders:',request_data.requestHeaders)
    print('responseHeaders:',request_data.responseHeaders)
    print('requestCookie:',request_data.requestCookie)
    print('responseCookie:',request_data.responseCookie)

    return 'ok'

if __name__ == '__main__':
    uvicorn.run(app=app, host='127.0.0.1', port=8000)

学过Flask的兄弟们应该对这个并不陌生,其实就是在自己电脑上开了一个接收数据的端口

使用方法演示

演示的网站是中国裁判文书网

1.先运行python代码,如果显示下图这样,就证明端口开启了
开启端口.png
2.接下来就是要修改一下FiddlerScript中两个地方,上面的红线处,替换为想要爬取信息的链接,只需要一部分即可,下面的红线处替换为返回值的一个参数即可
修改Script代码.png
3.然后你点击想要的界面,就会发现需要的数据返回在了python运行框,剩下的大家应该就明白了吧。
最终数据.png

最后

1.其实有些人觉得这个没什么用,这个我没办法反驳,知道该怎么用的人自然知道,而且这个不止能用于网页,APP也同样可以,如果你嫌手动麻烦的话,网页你可以直接用selenium来代替手点,APP的话可以写个按键精灵脚本。
2.这个也不是我写的,是一位叫李如意的老师写的,我发这个帖子已经征得本人同意,希望大家如果转载的话,可以带上这个署名。

免费评分

参与人数 6吾爱币 +10 热心值 +5 收起 理由
caiji1 + 1 + 1 我很赞同!
正己 + 1 + 1 大佬tql
苏紫方璇 + 3 + 1 鼓励转贴优秀软件安全工具和文档!
月清影独醉 + 1 + 1 用心讨论,共获提升!
蓝筹 + 1 我很赞同!
Pandolar + 3 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| qianshang666 发表于 2021-6-23 19:02
hooing 发表于 2021-6-23 18:44
可不可以说一下使用场景?如果单纯是爬数据,python不能单独完成吗?FiddlerScript把目标URL的响应转发过来 ...

一些政府网站你想单纯的爬数据和单纯的扣代码不现实
xinyangtuina 发表于 2022-11-29 17:47
xinyangtuina 发表于 2022-11-20 18:30
按教程配置的:
第1步端口开启和教程一样的
到加载网页时,

找到原因了,是fiddler 那边没有对应的cookie数据,所以ptyhon 这里要禁用掉。
[Python] 纯文本查看 复制代码
class Item(BaseModel):
    url:str
    response_code:str
    responseBody:str
    requestHeaders:str
    responseHeaders:str
    # requestCookie:str
    # responseCookie:str

app = FastAPI()
@app.post("/sendData")
async def post_info1(request_data:Item):
    print("url:", request_data.url)
    print("response_code:", request_data.response_code)
    print("responseBody:", request_data.responseBody)
    print('requestHeaders:', request_data.requestHeaders)
    print('responseHeaders:', request_data.responseHeaders)
    # print('requestCookie:', request_data.requestCookie)
    # print('responseCookie:', request_data.responseCookie)
gunxsword 发表于 2021-6-23 14:59
感谢分享,虽然现在用不到,但是能用到的时候,会很方便!
莫凌 发表于 2021-6-23 15:09
大佬有没有fd抓会员书本内容的
 楼主| qianshang666 发表于 2021-6-23 15:10
莫凌 发表于 2021-6-23 15:09
大佬有没有fd抓会员书本内容的

抱歉呀,这个我真没
helian147 发表于 2021-6-23 15:55
本帖最后由 helian147 于 2021-6-23 16:51 编辑

李如意是知乎的那个吗?

哔哩哔哩奶提子 发表于 2021-6-23 17:01
按照使用方法  python显示422 Unprocessable Entity不懂因为啥原因
正己 发表于 2021-6-23 18:12
李如意老师很强的
hooing 发表于 2021-6-23 18:44
可不可以说一下使用场景?如果单纯是爬数据,python不能单独完成吗?FiddlerScript把目标URL的响应转发过来是基于什么考虑呢?是目标网站反爬太厉害吗?
 楼主| qianshang666 发表于 2021-6-23 18:50
哔哩哔哩奶提子 发表于 2021-6-23 17:01
按照使用方法  python显示422 Unprocessable Entity不懂因为啥原因

不应该呀,你可以发个具体问题截图我帮你看看
 楼主| qianshang666 发表于 2021-6-23 18:52
正己 发表于 2021-6-23 18:12
李如意老师很强的

能和正己大佬五五开吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 04:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表