【问题标题】:how to send a plain http request to a url?如何向 url 发送一个普通的 http 请求?
【发布时间】:2018-10-21 18:36:12
【问题描述】:

我有一个使用 postman 生成的 HTTP 请求:

GET http://google.com/ HTTP/1.1
cache-control: no-cache
User-Agent: PostmanRuntime/7.3.0
Accept: */*
Host: google.com
accept-encoding: gzip, deflate
Connection: keep-alive

我正在通过 python 中的套接字从客户端接收这些类型的 HTTP 请求,我想将其发送到其指定的 URL。

我对请求库很熟悉,但考虑到客户端可以发送任何类型的 HTTP 请求这一事实,分解请求并重新构建它似乎效率低下。

有没有什么简单方便的方法可以将这个请求直接发送到它的 URL?

提前谢谢你。

【问题讨论】:

  • 使用TCP Socket。
  • 您能澄清一下您的问题吗?一方面,“预先确定”表明请求总是相同的,另一方面看起来你想构建某种代理。
  • 很抱歉给您带来不便,我的意思是我将请求作为文本进行,并不总是相同。是的,它是某种代理。
  • 只需获取原始请求并将其发送到其他地方,您可以使用socket asyncio。

标签: python python-3.x sockets python-requests


【解决方案1】:

显然,我们可以实现这一点的一种方法是使用 cmets 中提到的 TCP 套接字,可以这样完成:

server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port = 80
try:
    server_socket.connect((url,port))
    server_socket.send(str.encode(body)) # encoding needed for streaming in bytes
except socket.error as e:
    print(str(e))
    sys.exit(1)

附带说明,网址不得包含“http://”或“https://”。如果是这样,它会引发错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-08
    • 2017-09-14
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多