【问题标题】:Send the the output of an HTTP request to another destination将 HTTP 请求的输出发送到另一个目的地
【发布时间】:2013-12-21 08:48:26
【问题描述】:

我有一个关于 HTTP 请求的问题。我什至不知道这是否可能,但正在尝试找出实现这一点的方法。

在 Python 中查看这个函数:

def send_this(url):

        this_browser=mechanize.Browser()
        this_browser.set_handle_robots(False)
        this_browser.addheaders=[('User-agent','Chrome')]

        test_output=this_browser.open(url).read().decode("UTF-8")
        return test_output

所以当我从我的机器上运行它时,很明显,该值被返回并写入变量translated

我想知道的是,有没有一种方法可以将请求发送到 URL 和输出 (this_browser.open(url).read().decode("UTF-8")),而不是开始写入这个变量,而是完全发送到另一个目的地而不回到原产地?

这是我想要实现的目标的图解。

My MachineAnother Server 都在我的控制之下。请求发送到的服务器不是。

  • 首先,这是否可行?
  • 其次,我应该研究哪些实现/技术来实现它?

【问题讨论】:

标签: python http httprequest


【解决方案1】:

您不能让“互联网”服务器将其回复发送到其他地方,但您可以阅读回复并将其通过第二个 http 连接发送到您的服务器,相应的接收器脚本会读取您发送的内容并对其进行处理随心所欲。

【讨论】:

  • 不是唯一的,但肯定是最简单、最直接的。
【解决方案2】:

您可以在这些机器上的某个端口上侦听并使用 TCP/IP 套接字,或者您可以通过 PHP 脚本执行此操作,该脚本读取其 URL 引用的 GET(或 POST)数据并将其写入文本文件/XML ,您当前在 Destination 运行的程序会识别出然后进一步处理数据。

【讨论】:

    【解决方案3】:

    不,这是不可能的。至少不在 HTTP 的范围内。

    与 FTP 不同,它打开单独的数据通道来传输数据(因此可以做到这一点),HTTP 通过单个 TCP 连接完成所有工作。所以服务器发送响应的唯一地方是发送请求的机器。

    您可以做的是连接到“另一个服务器”并告诉它启动 HTTP 请求(并因此获得响应)。

    【讨论】:

      【解决方案4】:

      您可能会使用 scapy 生成对页面的请求,并将发起者详细信息设置为另一台机器的详细信息 - 这应该会导致数据被发送到另一台机器用于网络页面请求另一台机器可能不会更新页面,因为它没有请求任何数据。

      您最好在另一台机器上使用 python 和 pyro 来控制网页显示,并且您的第一台机器可以要求远程机器请求并显示所需的页面。

      【讨论】:

      • 理论上,如果我可以有一小段代码专门在另一台机器上监听这种请求,那会奏效吗?
      • 这就是 pyro,pypi.python.org/pypi/Pyro4 为您所做的 - 它侦听远程执行请求并运行您在本地计算机上选择的大约 任何 python 代码并返回结果发给发起人。您可以自己滚动,但是当它为您完成时......
      【解决方案5】:

      您也许可以hoodwink "The Internet" server that request from "my machine" is actually coming from "another machine" 以便它向它发送响应。

      你可以use scapy to spoof your ip

      正如您可能已经猜到的那样,use the approach that you've mentioned in the comment: 更容易

      或者直接从“另一台服务器”向“互联网”服务器发送请求。

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-02
        • 2015-07-08
        • 2018-02-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多