HTTP 连接解析失败

HTTP connection parsing fails

我正在尝试调用 parse_ip() 中的 connect() 函数,该函数将通过网页搜索输入 IP 以找到匹配项。 Connect 为列表 THREAT 的每个元素调用函数。 这是我的代码:

def connect(url):
    sessions = requests.Session()
    print "Connecting with", url
    try:
        r = sessions.get(url,
                        headers = create_basic_headers(),
                        proxies = {'http': HTTP_PROXY, 'https': HTTPS_PROXY})
        return r
    except:
        sys.stdout.write('[!] Could not connect to: %s\n' % url)

def parse(ip):
    counter = 0
    ioc_list = []
    for filename, source in THREAT.iteritems():
        c = connect(source)
        for line in c:
            if line.startswith("/") or line.startswith('\n') or line.startswith("#"):
                pass
            else:
                counter += 1
                d = 0
                while d < len(ip):
                    if ip[d] in line:
                        print ip[d], source

                    d +=1

在运行脚本上,解析页面无法连接,最后我得到以下错误:

[!] Could not connect to: http://... for line in c: TypeError: 'NoneType' object is not iterable

任何人都可以帮我弄清楚这里出了什么问题。

requests 无法与服务器建立连接。引发异常,然后在 bare except 子句中处理。没有显示有关异常的信息,因此很难诊断实际的连接问题。

在异常 connect() returns None 到调用者之后,调用者然后尝试对其进行迭代。这就是导致 TypeError.

的原因

你为什么不尝试打印异常?

def connect(url):
    sessions = requests.Session()
    print "Connecting with", url
    try:
        r = sessions.get(url,
                        headers = create_basic_headers(),
                        proxies = {'http': HTTP_PROXY, 'https': HTTPS_PROXY})
        return r
    except requests.exceptions.ConnectionError as exc:
        sys.stdout.write('[!] Could not connect to: %s\n' % url)
        sys.stdout.write('Exception: %s' % exc)

希望这会告诉您连接失败的原因。

接下来,您需要检查 parse()connect() 的 return 值。类似于:

c = connect(source)
if c is not None:
    for line in c:
        ....

或者您可以在 connect() 中重新提出异常并让 parse() 处理它。