在Python中向IPv6链路本地地址发送GET请求
有没有一种标准的方法可以使用任何常见的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
$