这两天优化端口扫描脚本,在获取HTTP页面内容时,发现requests.get hang住了(之前httplib不会)。requests.get 提供了超时参数timeout,但在实际使用过程中,仍发现get请求可能被hang住。原因在于非HTTP Server,response中一直没有出现换行符\n,导致_read_status()在获取状态码的时候就hang住了。一个简单的解决方法,可以创建新的线程,示例代码参考如下,这部分代码是无法直接工作的:def do_get_thread(url, ret):
try:
headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 '
'(KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25',
'Range': 'bytes=0-10240',
'Connection': 'Close'}
ret.append(requests.get(url, headers=h
...
继续阅读
(44)