Python Flask代理服务器
我试图在Python Flask代理服务器,python,flask,http-proxy,Python,Flask,Http Proxy,我试图在Flask中创建一个非常简单的代理服务器。我是一个初学者,试图从这里学到基本知识。理想情况下,我希望这里的输出看起来像是直接访问站点。我不确定这是否是不可能做到的 我发现如下 从烧瓶导入烧瓶 从请求导入获取 app=烧瓶(名称) 站点名称=http://google.com' @app.route('/',默认值={'path':''}) @应用程序路径(“/”) def代理(路径): 返回get(f'{SITE\u NAME}{path}').content 如果uuuu name u
Flask
中创建一个非常简单的代理服务器。我是一个初学者,试图从这里学到基本知识。理想情况下,我希望这里的输出看起来像是直接访问站点。我不确定这是否是不可能做到的
我发现如下
从烧瓶导入烧瓶
从请求导入获取
app=烧瓶(名称)
站点名称=http://google.com'
@app.route('/',默认值={'path':''})
@应用程序路径(“/”)
def代理(路径):
返回get(f'{SITE\u NAME}{path}').content
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
应用程序运行(主机=0.0.0.0',端口=5000)
这几乎正是我想要的。输出内容的示例(用于)
有没有办法渲染出
javascript
和图像?这是不可能的吗?在呈现请求URL时确实应该添加斜杠:f'{SITE\u NAME}/{path}'
。添加一个print
语句,您会注意到您正在请求类似http://google.comtextinputassistant/tia.png
此外,代理也没有那么简单。您应该克隆客户端发送的所有请求头,并将其发送到google.com,并在处理响应时执行反反转。检查响应与
https://www.google.com/textinputassistant/tia.png
和https://localhost:5000/textinputassistant/tia.png
,检查两个URL中的请求和响应头,您会注意到有多少信息丢失。试试这个,我明白了。例如,对于google页面,一个GET请求来自localhost(GET)http://localhost:5000/logos/doodles/2021/celebrating-字母-n-6753651837108360.2-l.png 500(内部服务器错误)
)。不知道该怎么做,按照你说的去做,重复所有的要求。非常感谢您的帮助,谢谢!查看@marcus aurelianus评论。有一个有趣的要点。
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)