Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask代理服务器_Python_Flask_Http Proxy - Fatal编程技术网

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)