gpt4 book ai didi

http - Python,Detect 是一个 URL 需要是 HTTPS 还是 HTTP

转载 作者:可可西里 更新时间:2023-11-01 16:07:51 26 4
gpt4 key购买 nike

使用 python 标准库,有没有办法确定给定的网址应该使用 HTTP 还是 HTTPS?如果您访问一个使用 HTTP://.com 的站点,是否有一个标准的错误代码说嘿傻瓜它应该是“HTTPS”而不是 http?

谢谢

最佳答案

你做过什么测试吗?

对您的问题的简短、过早的回答是:不存在应该使用...这是您的偏好,或者完全由服务器决定,因为重定向。

有些服务器确实只允许 https,当您调用 http 时确实会返回 302 代码。

因此,如果您的目标是从给定的 url 加载 https,只需尝试回退到正常的 http。

我建议您只发送 HEAD 请求,这样您就可以非常快速地识别 https 连接是否正在监听。我不建议您检查端口 443 (ssl),因为有时人们不遵守该规则,而 https 协议(protocol)将确保您在 https 下,而不是在虚假的 443 端口下。

一些代码:

#!/usr/bin/env python
#! -*- coding: utf-8 -*-

from urlparse import urlparse
import httplib, sys

def check_url(url):
url = urlparse(url)
conn = httplib.HTTPConnection(url.netloc)
conn.request("HEAD", url.path)
if conn.getresponse():
return True
else:
return False

if __name__ == "__main__":
url = "http://httpbin.org"
url_https = "https://" + url.split("//")[1]
if check_url(url_https):
print "Nice, you can load it with https"
else:
if check_url(url):
print "https didn't load, but you can use http"
if check_url(url):
print "Nice, it does load with http too"

关于http - Python,Detect 是一个 URL 需要是 HTTPS 还是 HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23764639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com