mitmproxy代理

文章目录

  • mitmproxy
    • 1. 网络代理
    • 2. 安装
    • 3. Https请求
      • 3.1 启动mitmproxy
      • 3.2 获取证书
      • 3.3 配置代理
      • 3.4 运行测试
    • 4. 请求
      • 4.1 读取请求
      • 4.2 修改请求
      • 4.3 拦截请求
    • 5. 响应
      • 5.1 读取响应
      • 5.2 修改响应
    • 6. 案例:共享账号
      • 6.1 登录bilibili获取cookies
      • 6.2 在代理请求中设置cookies

mitmproxy

mitmproxy是一个代理工具(软件安装 或 Python模块安装),实现代理请求(拦截请求或修改请求)。

1. 网络代理

网络代理是一种位于客户端和服务器之间的中间服务器,它充当客户端与目标服务器之间的中间人。当客户端发送请求时,请求首先被发送到代理服务器,然后由代理服务器转发给目标服务器,并将目标服务器的响应返回给客户端。

代理服务器的作用可以有多种形式,包括:

  1. 隐藏真实的客户端IP地址:代理服务器可以屏蔽客户端的真实IP地址,使目标服务器无法直接获取到客户端的真实位置信息。这种方式可以提供一定的匿名性和隐私保护。
  2. 缓存和加速:代理服务器可以缓存目标服务器的响应,当其他客户端请求相同的资源时,代理服务器可以直接返回缓存的响应,减少了对目标服务器的访问,提高了访问速度和网络效率。
  3. 过滤和访问控制:代理服务器可以根据设置的规则对请求进行过滤和访问控制。例如,可以通过代理服务器实现对特定网站或内容的屏蔽,或者对特定客户端的访问进行限制。
  4. 突破网络限制:在某些情况下,代理服务器可以用于突破网络限制。例如,当访问某些网站受到地理位置限制或网络审查时,可以通过使用代理服务器来绕过这些限制。
  5. 负载均衡:代理服务器可以作为负载均衡器,将请求分发到多个目标服务器上,以实现更好的性能和可靠性。

mitmproxy是一款流行的开源代理工具,用于拦截、修改和观察网络流量。它可以用于网络安全测试、调试和逆向工程等场景。

请添加图片描述

2. 安装

在安装前需要去下载Visual C++ Build Tools for Visual Studio 2015安装到电脑。

https://my.visualstudio.com/Downloads?q=Visual%20Studio%202015%20update%203

请添加图片描述

解压 mu_visual_cpp_build_tools_2015_update_3_x64_dvd_dfd9a39c.iso文件,然后默认安装。

用pip安装mitmproxy:

pip install mitmproxy

3. Https请求

如果想要让mitmproxy支持:http和https请求,就需要安装证书。

3.1 启动mitmproxy

>>>mitmdump -q  -p 8888 -s test.py

请添加图片描述

from mitmproxy import httpdef request(flow: http.HTTPFlow):print("请求->", flow.request.url)def response(flow: http.HTTPFlow):...

3.2 获取证书

在电脑 C:\Users\Administrator\.mitmproxy 中去获取。

请添加图片描述

双击下载证书

请添加图片描述

请添加图片描述
请添加图片描述

3.3 配置代理

请添加图片描述

3.4 运行测试

请添加图片描述

4. 请求

4.1 读取请求

from mitmproxy import http
from mitmproxy.http import Requestdef request(flow):print("请求-->", flow.request.url)print("请求-->", flow.request.host)print("请求-->", flow.request.path)print("请求-->", flow.request.query)print("请求-->", flow.request.cookies)print("请求-->", flow.request.headers)print("请求-->", flow.request.method)print("请求-->", flow.request.content)def response(flow: http.HTTPFlow):pass

4.2 修改请求

from mitmproxy import httpdef request(flow):flow.request.url = "https://www.baidu.com/"def response(flow: http.HTTPFlow):pass

请添加图片描述

4.3 拦截请求

可以拦截请求,并放回指定内容

from mitmproxy import http
from mitmproxy.http import HTTPFlow
from mitmproxy.http import Responsedef request(flow: HTTPFlow):if flow.request.url.startswith("https://dig.chouti.com/"):flow.response = Response.make(200,  # (optional) status codeb"Hello World",  # (optional) content{"Content-Type": "text/html"}  # (optional) headers)def response(flow: http.HTTPFlow):pass

请添加图片描述

也可以直接kill请求

from mitmproxy import http
from mitmproxy.http import Request
from mitmproxy.http import HTTPFlowdef request(flow: HTTPFlow):if flow.request.url.startswith("https://dig.chouti.com/"):flow.kill()def response(flow: http.HTTPFlow):pass

5. 响应

5.1 读取响应

from mitmproxy import http
from mitmproxy.http import HTTPFlowdef request(flow: HTTPFlow):...def response(flow: http.HTTPFlow):print(flow.request.url)print(flow.response.status_code)print(flow.response.cookies)print(flow.response.headers)print(flow.response.content)

5.2 修改响应

from mitmproxy import http
from mitmproxy.http import HTTPFlow, Responsedef request(flow: HTTPFlow):...def response(flow: http.HTTPFlow):flow.response = Response.make(200,  # (optional) status codeb"Hello World",  # (optional) content{"Content-Type": "text/html"}  # (optional) headers)

请添加图片描述

6. 案例:共享账号

6.1 登录bilibili获取cookies

from mitmproxy import http
from mitmproxy.http import HTTPFlowdef request(flow: HTTPFlow):print(flow.request.url)print(flow.request.cookies)def response(flow: http.HTTPFlow):...

请添加图片描述

6.2 在代理请求中设置cookies

from mitmproxy import http
from mitmproxy.http import HTTPFlowdef request(flow: HTTPFlow):print(flow.request.url)print(flow.request.cookies)flow.request.cookies = [['_uuid', 'A98A10A1C-9F33-6339-17E4-CD8671029FB5A86227infoc'],['buvid3', '6F2EA161-81E8-FC5D-692F-FF62C048B83B86528infoc'], ['b_nut', '1709354487'],['buvid4','FDE22D0E-55C2-7A05-BE12-D69A19F71C7586528-024030204-nzup34dDLssl%2BNgRMbI%2BUQ%3D%3D'],['enable_web_push', 'DISABLE'], ['FEED_LIVE_VERSION', 'V8'],['header_theme_version', 'CLOSE'], ['CURRENT_FNVAL', '4048'],['rpdid', "|(~|mm|k)~l0J'u~|mJlRl|m"], ['b_lsid', '6FDF9248_18DFEAFE967'],['home_feed_column', '5'], ['browser_resolution', '1536-239'], ['bili_ticket','eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDk2MzcwNzEsImlhdCI6MTcwOTM3NzgxMSwicGx0IjotMX0.qxpceIj8gLlNQ33eR9d5jxfizfYD_AWX_zpvHAFixY4'],['bili_ticket_expires', '1709637011'], ['bp_video_offset_250595597', '904259047290568723'],['fingerprint', 'bc08d5f7f0d84ff74bf64c3b8cead4fc'], ['buvid_fp_plain', 'undefined'],['buvid_fp', 'bc08d5f7f0d84ff74bf64c3b8cead4fc'], ['SESSDATA','e3f51de8%2C1724929938%2Cb3219%2A32CjDQyE1hfakSZT7vrNGmyYTP3Es7buyebKSAFmqg5JIZOH4RfRvNZRNydfq3JlRMLlcSVjd4SE0xc2I5T0dtVXFMMzBLbnhXZW5QNTNyeUZLVjNteDVaRUZ4V1FSQ2gwSXBCb09NLVFzc2cyRmpsNkJPOE9jVE9xdGlIS3gwZHlQWTJaX182SkZnIIEC'],['bili_jct', 'a74e7345a811680a745797300a7ae525'], ['DedeUserID', '250595597'],['DedeUserID__ckMd5', 'dd8e5953de09a630'], ['sid', 'qmre1dgw']]def response(flow: http.HTTPFlow):...

在配置完cookies后在被代理的电脑打开bilibili会显示为登录状态

请添加图片描述

若多台电脑接入代理则可以共享这个账号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/504697.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能优化篇(二) 静态合批步骤与所有注意事项\游戏运行时使用代码启动静态合批

静态合批步骤: 1.开启Project Settings —>Player–>Other Setting里勾选Static Batching选项(一般情况下unity都是默认勾选状态) 2.勾选需要合批的静态物体上的Batching Static项,勾选后此物体下的所有子物体都默认参与静态合批(勾选后物体不能进行移动/旋转/缩放操作,…

逻辑回归与决策边界解析

目录 前言1 逻辑回归基础1.1 Sigmoid函数:打开分类之门1.2 决策函数:划定分类界限1.3 逻辑回归详解 2 决策边界2.1 线性决策边界2.2 非线性决策边界2.3 决策边界的优化 3 应用与实例3.1 垃圾邮件分类:精准过滤3.2 金融欺诈检测:保…

揭示IP风险画像的作用与价值

在当今数字化时代,互联网的快速发展为企业和个人带来了巨大的机遇,同时也带来了各种安全风险和威胁。随着网络攻击手段的不断升级和演变,传统的安全防御手段已经无法满足对抗复杂多变的网络威胁的需求。IP风险画像作为一种新型的网络安全解决…

MYSQL的优化学习,从原理到索引,在到事务和锁机制,最后的主从复制、读写分离和分库分表

mysql的优化学习 为什么选择Mysql不选择其他的数据库?还有哪些,有什么区别? Mysql:开源免费版本可用,适用于中小型应用 Oracle:适用于大型企业级应用,复杂的业务场景和大量数据的处理&#xf…

基础小白快速入门Python------>模块的作用和意义

模块, 这个词听起来是如此的高大威猛,以至于萌新小白见了瑟瑟发抖,本草履虫见了都直摇头,好像听上去很难的样子,但是但是,年轻人,请听本少年细细讲述,他只是看起来很难,实…

七、基于FreeRTOSSTM32移植MQTT

1、移植环境 (1)Keil MDK: V5.38.0.0 (2)STM32CubeMX: V6.8.1 (3)MCU: STM32F407ZGT6 (4)已移植好FreeRTOS和调试好串口的项目。 FreeRTOS移植参考博客:示例1:FreeRTOS移植详解_基于HAL库工程_hal库移植rtos-CSDN博客mqttclient源码:htt…

GIS之深度学习01:检测电脑是否包含英伟达GPU

GPU(Graphics processing unit),中文全称图形处理器,我们听说的更多的CPU全称是central processing unit,中央处理器。研究深度学习和神经网络大都离不开GPU,在GPU的加持下,我们可以更快的获得模…

Linux搭建SFTP服务器

案例:搭建SFTP服务器 SFTP(SSH文件传输协议) SFTP(SSH文件传输协议)是一种安全的文件传输协议,用于在计算机之间传输文件。它基于SSH(安全外壳协议)的子系统,提供了加密的…

java 基础(核心知识搭配代码)

前言 java的学习分为了上部分以及下部分进行学习,上部分就是对于java的基础知识,面向对象上,面向对象下,异常操作,javaApi;下部主要是集合,泛型,反射,IO流,J…

加密隧道技术

在现在的互联网上传输数据,首要考虑的就是安全。这关乎到你的隐私,个人信息,财产安全等等重大问题。如果你的程序本身传输的信息没有加密,也可以通过其他辅助方式让你的通信加密。一些工具的就是为了解决这样的场景的,…

ubuntu20下使用 torchviz可视化计算图

安装 torchviz: pip install torchviz示例代码:下面是一个简单的示例代码,展示如何使用 torchviz 可视化计算图: python import torch from torchviz import make_dot# 创建一个简单的模型 model torch.nn.Sequential(torch.nn…

《求生之路2》服务器如何选择合适的内存和CPU核心数,以避免丢包和延迟高?

根据求生之路2服务器的实际案例分析选择合适的内存和CPU核心数以避免丢包和延迟高的问题,首先需要考虑游戏的类型和对服务器配置的具体要求。《求生之路2》作为一款多人在线射击游戏,其服务器和网络优化对于玩家体验至关重要。 首先,考虑到游…