gpt4 book ai didi

python - 监听 HTTP 响应

转载 作者:可可西里 更新时间:2023-11-01 16:27:02 31 4
gpt4 key购买 nike

我正在尝试编写一个 python 应用程序,它将在套接字上监听 HTTP 响应。我正在使用 http-parser为了这。这是我的代码:

#!/usr/bin/env python
import socket

from http_parser.http import HttpStream
from http_parser.reader import SocketReader

from http_parser.util import b

def main():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 7000))
s.listen(5)
try:
while True:
p = HttpStream(SocketReader(s))
finally:
s.close()

if __name__ == "__main__":
main()

我有两个问题:

  1. 这是最好的方法吗?请注意,我不想先发送请求再收听响应。我想要一个重定向机制,将所有响应重定向到运行此脚本的框。
  2. 我应该如何测试它?是否有可以模拟 HTTP 响应的工具?

编辑我想做的是:我有三个盒子,一个运行 Apache,一个运行这个脚本,一个是客户端。当客户端连接到 Apache 并发回响应时,我将响应转移到此框。所以在这个脚本中,我试图监听 HTTP 响应。

拓扑结构这是我的拓扑:服务器 <----> 交换机一 <-----> 交换机二 <-----> 盒子一和盒子二最初,box one 连接到服务器并发送请求。当第二个交换机收到来自服务器的响应时,它会将响应 fork 到盒子一和盒子二。

最佳答案

  1. 如果您真的想在 TCP 套接字级别操作,那将是一个完美的实现。如果你想要更多的抽象,有很多很多 python 的 HTTP 服务器包,包括标准库的 BaseHttpServer和外部库/框架,如 tornadocherrypy .

  2. 要测试您的 HTTP 监听器,有很多选项。您可以用 Python 编写完整的 HTTP 客户端测试代码(使用像 urllib 这样的 HTTP 客户端库),或者您可以:

    • 将您的网络浏览器指向 http://localhost:7000
    • telnet 到本地主机上的端口 7000 并输入原始 HTTP 请求。
    • 使用 nc 自动执行上述操作,例如:

      echo -e 'GET / HTTP/1.1\n\n' | nc localhost 7000

术语说明:在 HTTP 术语中,您在绑定(bind)套接字上监听的是 HTTP 请求;您发送回连接客户端的是一个响应

关于python - 监听 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416871/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com