某个网址的爬虫——mitmproxy的简单使用

前言

直言的说

笔者对数据不感兴趣,所以是什么网址不重要,里面的内容也不重要。

笔者只是想进行这个爬虫这个爬的过程。

网址如下

gnAtLt84GJxI1YuZnOWEI+WOiG1VR9ip0NZek1C8tpVnP246hSGiP14R66kcvnle

加密网址的函数

javascript 复制代码
const CryptoJS = require('crypto-js');
let key='1234567890123456'
let iv='abcdef9876543210'; 
function encryptUrl(url, key, iv) {
  return CryptoJS.AES.encrypt(url, CryptoJS.enc.Utf8.parse(key), {
    iv: CryptoJS.enc.Utf8.parse(iv),
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  }).toString();
}

哈哈哈哈哈哈,哈哈哈哈哈(0.0)(0.0)(0.0)

正文

分析

进去之后,发现请求里面有这些参数

都没有进行加密,请求头里面也没有什么加密

但是发现响应是加密的

直接看堆栈的调用

可以发现是htmlCommon.jsjquery

直接点击Common.js,进去看看

发现了关键

这个success,就jquery发送请求,成功后的处理

里面可以看到有一个webInstace.shell(e)

打个断点,看看

刚开始是加密的

经过之后

可以发现e被解密出来了,那**webInstace.shell(e)**就是解密函数

进去看看

发现是经过混淆的代码,但是,笔者发现是在一个js文件里面

而且关键的一点

笔者发现了webInstace,那就简单了,直接把整个文件都复制下来

前置准备

  1. 新建一个文件夹
  2. 新建一个index.js文件
  3. 把webDES.min.js复制到index.js
  4. 新建一个index.html
  5. 导入index.js

其中index.html的内容如下

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="index.js"></script>
    <script>
        console.log(webInstace)
    </script>
</head>
<body>

</body>
</html>

笔者先打印看看情况,看有没有这个对象,结果如下

哈哈哈哈哈哈,可以

那问题已经解决了,没报错。

去掉打印语句

编写爬虫

先使用爬虫来试试,很简单,代码如下

python 复制代码
import requests
from DrissionPage import ChromiumPage
page= ChromiumPage()
url = '*****'
data = {
    'pageIndex': '4',
    'pageSize': '12',
    'SceneID': '2',
    'TagID': '',
    'MethodName': 'Data_ReportListNew'
}

resp = requests.post(url, data=data)
page.get('http://localhost:63342/..../index.html')
decrypted_data = page.run_js("return JSON.parse(webInstace.shell(arguments[0]))", resp.text)
print(decrypted_data)

笔者发现不需要请求头,结果如下

说实话,没什么意思,虽然解密的函数是混淆的,但是可以绕过去,不需要解密

使用mitmproxy试试

页面是通过jquery发送的请求,然后在jquery的success里面解密的,那么笔者也使用jquery

编写爬虫,不需要请求头,那更简单了

代理文件都不需要写,直接启动mitmproxy就可以

那么,index.html文件的内容如下

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="index.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
</head>
<body>
<script>
    const params = {
      pageIndex: '4',
      pageSize: '12',
      SceneID: '2',
      TagID: '',
      MethodName: 'Data_ReportListNew'
    };
    $.post('http://localhost:8082/API/GetData.ashx',params, function (data) {
        console.log(JSON.parse(webInstace.shell(data)));
    });

</script>
</body>
</html>

使用8082端口,这看个人的选择,无所谓

启动

mitmweb --mode reverse:xxxxx -p 8082

结果如下

没问题。

总结

mitmproxy是真好玩。

相关推荐
桃花键神7 小时前
Claude Code + Bright Data Web Scraping:2026 年 3 步搭建 AI 爬虫
前端·人工智能·爬虫
跨境技工小黎9 小时前
IPFoxy动态住宅IP实测:做数据采集和爬虫可行吗?
爬虫·网络协议·tcp/ip
玫瑰互动GEO9 小时前
企业官网SEO优化技术架构:从服务器配置到爬虫友好的全链路实践
爬虫·架构
梅孔立10 小时前
Docker 部署 Python3\.11 Flask爬虫项目 终极稳定教程(解决线程报错/挂载失效/pip报错)
爬虫·docker·flask
傻啦嘿哟1 天前
猫眼电影TOP100爬虫:Requests+正则表达式实战
爬虫·正则表达式
MgArcher1 天前
抖音a_bogus参数逆向实战:JSVMP环境模拟与Hook技术(2025最新)
javascript·爬虫·python
MgArcher1 天前
极验GT4滑块验证码全链路逆向:w参数生成与验证流程(2025最新)
爬虫
亿牛云爬虫专家1 天前
聊聊数据的“冷热分离“:如何对历史爬虫数据进行合理的归档与压缩存储?
爬虫·爬虫代理·架构设计·隧道代理·大数据处理·压缩存储·数据分层存放
袁袁袁袁满1 天前
Python爬虫实战:利用巨量IP获取跨境电商数据
爬虫·python·网络爬虫·爬虫实战·跨境电商·电商爬虫
拿本唠嗑AI研究1 天前
现代前端架构爬虫指南:从静态页面到 React/Vue 单页应用
前端·爬虫·架构