python 2.7如何通过基本认证?

How to get through basic authentification with python 2.7?

我想让服务器在网站不响应 HTTP 200 时发送电子邮件。 我用 python 创建了一个文件,然后 crontab 在我的服务器上每分钟执行一次这个文件。

但是我无法通过 python 的文件通过基本身份验证访问我的网站之一。

servers = ("133.###.###.###:####","133.###.###.###:9200","https://########.net:1##0")
def checkroot(address):
    global result,error_detected
    conn = httplib.HTTPConnection( address )
    try:
        conn.request( "GET", "/" )
    except:
        result = result + address + "websites are down\n"
        error_detected = True
        return
    response = conn.getresponse()
    if response.status != 200:
        error_detected = True
    result = result + format_result(address,response) + "\n"
    conn.close()

for each in servers:
    checkroot(each)

第三个网站有基本认证。 Python 版本为 2.75。

我希望能够访问该网站并获得正确的 HTTP 响应。

对于需要基本身份验证的 URL,您需要在连接 headers 中传递您的身份验证详细信息:

from base64 import b64encode
# This sets up the https connection
c = HTTPSConnection("www.google.com")
# we need to base 64 encode it
creds = b64encode("username:password")
headers = { 'Authorization' : 'Basic %s' %  creds }
# then connect
c.request('GET', '/', headers=headers)

不过我建议使用 requests 库,这样更容易。