在Python中向IPv6链路本地地址发送GET请求

0 投票
1 回答
1307 浏览
提问于 2025-04-18 11:57

有没有一种标准的方法可以使用任何常见的Python库向一个网址发出HTTP GET请求?这里有个重要的限制,就是这个网址的主机地址是一个IPv6的链路本地地址(特别强调“链路本地”)。也就是说,运行服务器的目标机器除了这个链路本地的IP地址(包含了MAC地址)之外,没有其他的IP地址。因此,它只能通过一个看起来像“fe80:::%eth0”的地址来访问,其中“%eth0”是客户端上与服务器共享广播域的网络接口。

1 个回答

1

你可以使用 Twisted的HTTP客户端接口 来实现这个功能:

from __future__ import print_function

from sys import argv

from twisted.internet.endpoints import TCP6ClientEndpoint
from twisted.web.client import ProxyAgent
from twisted.internet.task import react

def main(reactor, address, uri):
    server = TCP6ClientEndpoint(reactor, address, 80)
    agent = ProxyAgent(server, reactor)
    getting = agent.request(b"GET", uri)
    def got(response):
        print("Got {}".format(response.code))
    getting.addCallback(got)
    return getting

if __name__ == "__main__":
    react(main, argv[1:])

比如说:

$ python http-proxy-get.py ::1 http://example.com/
Got 200
$

撰写回答