Flask代理服务器

2024-05-13 02:56:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Flask中创建一个非常简单的代理服务器。我是一个初学者,试图从这里学到基本知识。理想情况下,我希望这里的输出看起来像是直接访问站点。我不确定这是否是不可能做到的

我发现如下code:

from flask import Flask
from requests import get

app = Flask(__name__)
SITE_NAME = 'http://google.com'

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def proxy(path):
    return get(f'{SITE_NAME}{path}').content

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

这几乎正是我想要的。输出内容的示例(例如http://google.comenter image description here

有没有办法渲染出javascript和图像?这不可能吗


Tags: pathnamefromimportcomapphttpflask
1条回答
网友
1楼 · 发布于 2024-05-13 02:56:18

在呈现请求URL时,确实应该添加斜杠:f'{SITE_NAME}/{path}'。添加一个print语句,您会注意到您正在请求类似http://google.comtextinputassistant/tia.png 的东西

此外,代理也没有那么简单。您应该克隆客户端发送的所有请求头,并将其发送到google.com,并在处理响应时执行反反转。检查来自https://www.google.com/textinputassistant/tia.pnghttps://localhost:5000/textinputassistant/tia.png的响应有多不同,检查来自这两个URL的请求和响应头,您将注意到有多少信息丢失

相关问题 更多 >