我只是在想我们怎样才能模仿浏览器,比如Chrome,用Python来检测网站的协议。例如,我们在地址栏上键入“stackoverflow.com”,然后按Enter键,浏览器可以自动检测并将url更改为“https://stackoverflow.com”(添加网站的协议),我想知道我们如何在Python中做到这一点,就像:
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
有什么库或包可以帮助完成这项工作吗?谢谢。
编辑:我的问题是唯一的,因为其他问题问如何重定向到https如果我们进入http,如我所提到的,我们可以在没有虚拟协议的第一阶段自动检测吗?
当您输入不带
http://
或https://
的url时,浏览器会自动假设您正在使用http://
,并在端口80上发送请求。如果该站点将您重定向到
https
站点,您将得到两个说明标题。一个将有一个表示无错误重定向的301响应。另一个是101,这表示您正在升级连接类型。如果您打开一个新的选项卡并加载
http://stackexchange.com
,并在web浏览器的开发人员工具套件的“网络”选项卡上查看这些包时,就会看到这种情况。注:
这两个代码都依赖于支持此行为的主机。并非所有网站都会自动将您重定向到
https://
网站。另外,并不是所有的服务器都支持http2
,因此您可能无法获得101
升级。如果您真的想确定
https://
是否是首选选项,则可能需要在未获得重定向时手动检查它是否存在。由于您提到了“浏览器”和“Chrome”行为,因此可以使用
selenium
获得与@BurkhanKhalid的正确答案相同的结果:它适用于stackoverflow,因为当您第一次访问端口80(http端口)上的stackoverflow.com时,stackoverflow的服务器会通知浏览器链接已永久移动到http s。
要在Python中检测到相同的内容,请使用
requests
库,如下所示:要了解URL是如何更改的,请查看history对象,您将看到一个301响应,这意味着URI已经moved permanently到了一个新地址。
相关问题 更多 >
编程相关推荐