使用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"

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,以下是使用 Flask 编写高性能单页应用的示例代码: ```python from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run(debug=True) ``` 在上面的代码中,我们使用 Flask 框架创建了一个应用,并定义了一个路由 `/`,当用户访问该路由时,会返回一个名为 `index.html` 的模板文件。 你可以根据自己的需求修改模板文件,以实现你想要的单页应用效果。 希望这个示例代码能够帮助到你! ### 回答2: 使用Flask编写高性能的单页应用可以通过合理的优化和设计来实现。以下是一个使用Flask编写的简单示例: ```python from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) ``` 在这个示例中,我们创建了一个Flask应用,并定义了一个路由`/`,当用户访问根路径时,会渲染一个名为`index.html`的模板文件。 为了提高性能,我们可以采取以下步骤: 1. 使用Gunicorn或uWSGI等服务器作为Flask应用的生产级服务器,以提供更高的并发性能和稳定性。 2. 使用Nginx作为反向代理服务器,可以提供静态文件的快速访问并有效地负载均衡请求。 3. 使用缓存来减少数据库或其他资源的请求次数,可以使用Redis或Memcached等缓存库,将常用数据缓存起来。 4. 使用异步任务处理库如Celery或RQ,将耗时的操作放入后台处理,避免阻塞主线程。 5. 合理利用缓存,并使用CDN来加速静态文件的加载。 6. 使用前端工具如Webpack来优化前端资源,减少文件大小及数量。 7. 避免重复查询数据库,可以使用ORM(对象关系映射)工具如SQLAlchemy,将查询缓存起来避免重复查询。 8. 使用表单验证及处理库如Flask-WTF,对用户输入进行验证和处理,避免潜在的安全风险。 9. 尽量减少数据库查询次数,合理利用数据库索引以及对查询进行优化。 以上是一些常见的优化措施,根据具体应用情况进行调整和进一步优化,可以提高Flask应用的性能和响应速度。 ### 回答3: 使用Flask编写高性能的单页应用可以通过以下步骤实现: 首先,确保电脑已经安装了Flask和相关的依赖库。可以通过以下命令安装Flask: pip install flask 接下来,创建一个新的Python文件(例如app.py),并在文件头部导入必要的模块: from flask import Flask, render_template 创建应用实例并初始化Flask应用: app = Flask(__name__) 定义单页应用的路由和视图函数: @app.route('/') def index(): return render_template('index.html') 在这个例子中,index()是我们应用的主页,它使用render_template函数渲染了一个名为index.html的模板。 接下来,创建一个名为index.html的HTML模板文件,并在里面添加你想要展示的内容。 在终端中运行应用: python app.py 应用将在本地的5000端口启动。可以通过浏览器访问http://localhost:5000来查看应用运行的效果。 以上只是一个简单的示例,如果想要构建更复杂的单页应用,可以进一步学习Flask的视图函数、模板渲染、静态文件引入等知识点,并根据需要来扩展应用。 希望以上回答对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值