目录
目录README.md

反向代理服务器

这是一个使用 Python 和 Flask 构建的简单反向代理服务器。它可以将所有请求代理到在 .env 文件中配置的目标 URL,并动态重写响应内容(HTML, CSS, JS)中的链接,以确保所有资源都通过代理加载。

主要功能

  • 反向代理: 将所有传入的请求(包括 GET, POST 等方法和路径)转发到目标服务器。
  • URL 重写: 自动重写 HTML (href, src, action)、CSS (url(), @import) 和 JavaScript 中的 URL,使其指向代理服务器而不是原始目标。
  • 流式响应: 对于非文本内容(如图片、视频),服务器以流式方式传输,以提高性能和减少内存使用。
  • CORS 支持: 自动添加 CORS (跨域资源共享) 头,允许跨域请求。
  • 配置简单: 只需在 .env 文件中设置目标 URL 即可。

技术栈

  • Python
  • Flask: Web 框架
  • Requests: 用于发送 HTTP 请求
  • BeautifulSoup4 & lxml: 用于解析和修改 HTML 内容
  • Waitress: 用于生产环境的 WSGI 服务器
  • python-dotenv: 用于管理环境变量

安装与配置

  1. 克隆仓库

    git clone <your-repo-url>
    cd <your-repo-directory>
  2. 安装依赖 建议在虚拟环境中使用 pip 安装项目所需的依赖项:

    pip install -r requirements.txt
  3. 创建配置文件 在项目根目录下创建一个名为 .env 的文件,并添加以下内容:

    TARGET_URL=https://example.com

    https://example.com 替换为您想要代理的目标网站 URL。

如何运行

完成安装和配置后,运行以下命令启动服务器:

python main.py

服务器将在 http://0.0.0.0:8080 上启动。现在,您可以通过访问 http://localhost:8080 来浏览代理的网站。

工作原理

该服务器拦截所有传入的 HTTP 请求。它会构建一个指向 TARGET_URL 的新请求,并将原始请求的路径、查询参数、请求头和数据包体一并转发。

当从目标服务器收到响应后:

  • 如果响应是文本类型(如 text/html, text/css, application/javascript),服务器会先读取全部内容,使用 BeautifulSoup 和正则表达式查找并替换所有指向原始域名的 URL,然后将修改后的内容返回给客户端。
  • 如果响应是二进制内容(如图片),服务器会直接将内容以数据流的形式转发给客户端,以避免不必要的内存消耗。
  • 它还会处理 HTTP 重定向,并重写 Location 头,以确保用户停留在代理服务器上。
关于
30.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号