该脚本有一个非常简单的目的,即检查一系列网站是否启动并运行。我尝试使用 urllib,但出现证书错误。
使用 http.client 和通过代理进行隧道似乎会返回一个奇怪的输出,直到网站由于 [SSL: UNKNOWN_PROTOCOL] 错误而崩溃。
我遇到的两个问题是:
编码:
import http.client, csv
my_file = open('active_site.csv')
my_reader = csv.reader(my_file)
my_data = list(my_reader)
my_len = len(my_data)
g = 1
while g < 10:
print("Checking {}....\n".format(my_data[g][3]))
conn = http.client.HTTPSConnection("My_Proxy", my_port)
conn.set_tunnel(my_data[g][3])
conn.request("HEAD", "/index.html")
res = conn.getresponse()
if res.status == 200:
print("{} is online!".format(my_data[g][3]))
g += 1
conn.close()
else:
print("{} seems to be offline".format(my_data[g][3]))
g += 1
conn.close()
我很感激任何关于我在哪里搞砸和/或不完整代码的建议。
最佳答案
@罗伯特,
对于 1,此行为的主要原因是服务器需要 session 信息。该信息可以是授权 token 或 cookie。使用隐身模式下的浏览器检查对同一 URL 的访问(如果它仍然有效)。如果请求返回 404,则原因是 cookie 和 headers。在正常模式下检查浏览器中的 cookie 和 header ,并尝试在您的 HTTPSConnection 中使用它们。
对于 2。我猜这是因为您的服务器使用 TTLs v3.0 进行 HTTPS。尝试使用为此版本启用的 python 3.8。查询:https://docs.python.org/3/library/http.client.html#http.client.HTTPSConnection
关于ssl - 在 Python3.6 中使用 http.client 返回 [SSL : UNKNOWN_PROTOCOL],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47338073/