使用flask实现一个简单的代理服务

背景:

有一些客户的服务是我本地windows电脑开vpn之后才能访问的。为了让公司内网的别的电脑不开vpn也能正常请求客户的接口,方便调试,所以使用我的windows电脑实现一个代理的功能。

原理简单画个图:

功能简单直接上代码:

复制代码
from flask import Flask, request, Response
import requests

app = Flask(__name__)


@app.route('/<path:dummy>', methods=['GET', 'POST'])
def proxy(dummy):

    host = request.host
    print("请求host:", host)

    if host == "proxy_aaaaaa.cn:5000":
        proxy_service = "https://aaaaaa.cn"
        pass

    elif host == "proxy_bbbbbb.cn:5000":
        proxy_service = "http://bbbbbb.cn"
        pass

    elif host == "proxy_cccccc.com:5000":
        proxy_service = "https://cccccc.com"

    # 获取请求 URL
    url = f'{proxy_service}/{dummy}'

    print(f"真实请求的url:{url}")
    print(f"真实请求的method:{request.method}")

    params = request.args

    print(f"真实请求的url字符串传参:{dict(request.args)}")

    form_data = dict(request.form)
    print("真实请求的form_data传参:", form_data)

    # 转发请求到目标服务器, 这里只代理了form_data传参和url查询字符串传参, 如果是json传参可以加上
    response = requests.request(
        method=request.method,
        url=url,
        params=params,
        data=form_data,
    )

    # 将目标服务器的响应返回给客户端
    print(f"真实响应status_code: {response.status_code}")
    return Response(response.content, content_type=response.headers['Content-Type'], status=response.status_code)


if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000, debug=False)

上面是代理的客户的三个服务, 我通过我本机的hosts文件区分访问的哪个真实的服务,hosts文件windows机器一般在 C:\Windows\System32\drivers\etc 这个位置

本地hosts配置:

复制代码
192.168.9.243	proxy_aaaaaa.cn	proxy_bbbbbb.cn	 proxy_cccccc.com

请求的时候把原始的域名换成代理的域名就好了:

复制代码
    # HOST = "http://aaaaaa.cn"            # 把客户原始的域名换成代理的域名就好了
    HOST = "http://proxy_aaaaaa.cn"
相关推荐
Allen_LVyingbo28 分钟前
Python常用医疗AI库以及案例解析(2025年版、上)
开发语言·人工智能·python·学习·健康医疗
智能砖头36 分钟前
LangChain 与 LlamaIndex 深度对比与选型指南
人工智能·python
到账一个亿43 分钟前
后端树形结构
后端
武子康1 小时前
大数据-31 ZooKeeper 内部原理 Leader选举 ZAB协议
大数据·后端·zookeeper
我是哪吒1 小时前
分布式微服务系统架构第155集:JavaPlus技术文档平台日更-Java线程池实现原理
后端·面试·github
代码老y1 小时前
Spring Boot + 本地部署大模型实现:安全性与可靠性保障
spring boot·后端·bootstrap
LaoZhangAI1 小时前
OpenAI API 账号分层完全指南:2025年最新Tier系统、速率限制与升级攻略
前端·后端
红衣信1 小时前
前端与后端存储全解析:从 Cookie 到缓存策略
前端·后端·面试
Kyrie_Li1 小时前
(十五)Spring Test
java·后端·spring
WildBlue1 小时前
🎉 手写call的魔法冒险:前端开发者的“换身份”指南🚀
前端·后端