首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python获取网站的协议(http或https)

如何使用Python获取网站的协议(http或https)
EN

Stack Overflow用户
提问于 2017-07-10 02:46:57
回答 3查看 15.2K关注 0票数 5

我只是在考虑如何模仿浏览器,比如Chrome,用Python来检测网站的协议。例如,我们在地址栏上键入"stackoverflow.com“,然后按Enter,浏览器可以自动检测并将url更改为"https://stackoverflow.com”(添加网站的协议),我想知道如何用Python实现它,具体如下:

代码语言:javascript
复制
url = "stackoverflow.com"
browser = Browser (url) # Browser is a class that we can get website content from url, get its protocol,...
print browser.protocol

https

是否有任何库或包可以帮助完成此操作?非常感谢。

编辑:我的问题是独一无二的,因为其他问题询问如果我们进入http,如何重定向到https,正如我提到的,我们能够在第一阶段自动检测到没有虚拟协议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-10 02:56:51

它适用于堆栈溢出,因为当您第一次访问端口80 ( http端口)上的stackoverflow.com时,stackoverflow的服务器通知浏览器链接已永久移动到https。

要在Python中检测到相同的内容,请使用requests库,如下所示:

代码语言:javascript
复制
>>> import requests
>>> r = requests.get('http://stackoverflow.com') # first we try http
>>> r.url # check the actual URL for the site
'https://stackoverflow.com/'

要了解URL是如何变化的,请查看历史对象,您将看到一个301响应,这意味着URI具有到新地址的永久移动

代码语言:javascript
复制
>>> r.history[0]
<Response [301]>
>>> r.history[0].url # this is the original URL we tried
'http://stackoverflow.com/'
票数 14
EN

Stack Overflow用户

发布于 2017-07-10 03:00:33

当您输入一个没有http://https://的url时,浏览器会自动假设您使用的是http://,并在端口80上发送请求。

如果站点将您重定向到一个https站点,您将得到两个值得注意的标题。一个将有一个301的响应,它表示一个非错误的重定向。另一个是101,它表示您正在升级连接类型。

如果您打开一个新的选项卡并加载http://stackexchange.com并在您的web浏览器开发工具套件的网络选项卡上查看packes,您就会看到这种情况。

注意:

这两个代码都依赖于支持此行为的主机。并非所有网站都会自动将您重定向到https://站点。此外,并不是所有这些程序都支持http2,因此您可能无法获得101升级。

如果您确实希望确定https://是否是首选选项,则可能需要在没有重定向时手动检查它是否存在。

票数 5
EN

Stack Overflow用户

发布于 2017-07-10 03:03:30

由于您提到了“浏览器”和"Chrome“行为,使用selenium可以得到与@BurkhanKhalid非常好的答案相同的结果。

代码语言:javascript
复制
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://stackoverflow.com") #Trying http first
url = driver.current_url

>>> print(url[:url.find(":")])
https
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45003098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档