这是一个相关的问题,但我无法弄清楚如何应用mechanize/urllib2的答案:如何强制python httplib库只使用A请求
基本上,给出这个简单的代码:
#!/usr/bin/python
import urllib2
print urllib2.urlopen('http://python.org/').read(100)
Run Code Online (Sandbox Code Playgroud)
这导致wireshark说以下内容:
0.000000 10.102.0.79 -> 8.8.8.8 DNS Standard query A python.org
0.000023 10.102.0.79 -> 8.8.8.8 DNS Standard query AAAA python.org
0.005369 8.8.8.8 -> 10.102.0.79 DNS Standard query response A 82.94.164.162
5.004494 10.102.0.79 -> 8.8.8.8 DNS Standard query A python.org
5.010540 8.8.8.8 -> 10.102.0.79 DNS Standard query response A 82.94.164.162
5.010599 10.102.0.79 -> 8.8.8.8 DNS Standard query AAAA python.org
5.015832 8.8.8.8 -> 10.102.0.79 DNS Standard query response AAAA 2001:888:2000:d::a2
Run Code Online (Sandbox Code Playgroud)
这是一个5秒的延迟!
我的系统中没有启用IPv6(gentoo编译 …
任何人都遇到此事:
更新DNS记录后..我对'test.somedomain.com'进行挖掘,得到167.69.143.234,但是当我执行socket.gethostbyname('test.somedomain.com')时,我得到167.69.6.234.
我猜socket仍在使用缓存......我该如何清除它?还是冲洗它?
我的代码非常简单:
Linux Termianl
dig test.somedomain.com
Run Code Online (Sandbox Code Playgroud)
蟒蛇:
import socket
socket.gethostbyname('test.somedomain.com')
Run Code Online (Sandbox Code Playgroud)
它应该返回167.69.143.234地址,因为它是DNS中更新的地址.