mitmproxy代理

2024-03-02 21:04
文章标签 代理 mitmproxy

本文主要是介绍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会显示为登录状态

请添加图片描述

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

这篇关于mitmproxy代理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/767421

相关文章

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

proxy代理解决vue中跨域问题

vue.config.js module.exports = {...// webpack-dev-server 相关配置devServer: {host: '0.0.0.0',port: port,open: true,proxy: {'/api': {target: `https://vfadmin.insistence.tech/prod-api`,changeOrigin: true,p

Linux如何做ssh反向代理

SSH反向代理是一种通过SSH协议实现的安全远程访问方式,它允许客户端通过SSH连接到一台具有公网IP的代理服务器,然后这台代理服务器再将请求转发给内部网络中的目标主机。以下是实现SSH反向代理的步骤: 一、准备工作 确保服务器配置: 内网服务器(目标主机)和外网服务器(代理服务器)都安装了SSH服务,并且能够通过SSH进行互相访问。内网服务器上的服务(如Web服务、数据库服务等)需要在本地

将你的github仓库设置为web代理

将你的github仓库设置为web代理 废话不多说,直接上步骤 废话不多说,直接上步骤 创建一个仓库,上传静态web。 2. 设置仓库的 page 1)点击 “Settings” 如图设置

Nginx反向代理功能及动静分离实现

一:Nginx支持正向代理和反向代理 1.正向代理 正向代理,指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务。 正向代理服务的特点是代理服务器 代理的对象是浏览器/客户端,也就是对于目标服务器 来说浏览器/客户端是隐藏的。 正向代理是客户端指定让代理去访问哪个服务,代表客户端的利益。 2.反向代理 反向代理,指的是浏览器/客户端并不知道自己要

Nginx跨域运行案例:云台控制http请求,通过 http server 代理转发功能,实现跨域运行。(基于大华摄像头WEB无插件开发包)

文章目录 引言I 跨域运行案例开发资源测试/生产环境,Nginx代理转发,实现跨域运行本机开发运行 II nginx的location指令Nginx配置中, 获取自定义请求header头Nginx 配置中,获取URL参数 引言 背景:全景监控 需求:感知站点由于云台相关操作为 http 请求,http 请求受浏览器跨域限制,不能直接访问,因此需要进行 http 的代理,实

黑马程序员---代理

分析代理类的作用与原理及AOP的概念 代理的概念与作用  1.已经写好一个类,现在要为这个类增加一些功能,例如,异常处理、日志、计算方法的运行时间、事务管理、等等,你准备如何做? 现在我们写一个代理类: 保持了原来那个类的功能,又增加了你现在需要的功能。 主函数调用的时候,直接调用代理类就行了。 这就是代理类的功能。   2.编写一个与目标类具有相同接口的代理类,代理

探寻 IP 代理地址繁多之因

在当今的网络天地里,IP 代理服务随处可见,且令人称奇的是,它们常常手握海量的 IP 地址可供挑选。那么,究竟是什么原因使得 IP 代理拥有如此众多的地址呢?现在,就让我们一同深入探究这个神秘现象背后的缘由。 从实际需求层面出发,不同的用户身处各异的使用场景,怀揣着不同的目的。企业在进行大规模数据采集时,往往期望避免被目标网站认定为单一来源进而遭到访问限制。在这种情况下,数量庞大的不同 IP

java设计模式day03--(结构型模式:代理模式、适配器模式、装饰者模式、桥接模式、外观模式、组合模式、享元模式)

5,结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: 代理模式 适配器模式 装饰者模式 桥接模式 外观模式 组合模式