Python GUI 编程 QtWebKit.QWebPage.userAgentForUrl(url) 无限死循环漏洞
这段时间搞 GUI 界面编程,除遇到一些常见小问题外,还有一种比较难发现的死循环问题。
这种不太常见的死循环问题,从代码角度和语法上看,一点问题也没有,但运行时,就可能是您程序的恶梦。当然,你自已弄出来的一些死循环也会有,但 IDE 会提示。
此处要说的,是 IDE 根本发现不了,也不会提示的程序源代码陷井。
此处要说一说 QtWebKit.QWebPage.userAgentForUrl(url) 函数,当 HTTP 请求用户代理时,此函数会返回 URL 用户代理 "字符串信息"。
User-Agent 英文简称 UA,中文译为 “用户代理”。User-Agent 是 HTTP 协议的一部分,属于请求头域。
User-Agent 是向访问网站提供所用浏览器类型及版本、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件、等信息的一特殊字符串头标识。
User-Agent 字符串在每次浏览器进行 HTTP 请求时,会被发送到服务器!
某些网站常通过判断 User-Agent 来给不同操作系统、不同浏览器发送不同页面;因此,可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 User-Agent 可绕过此种检测。
user-agent 作用
01、统计用户浏览器使用情况。 有些浏览器说被多少人使用了,实际上就可通过判断每个IP 的 UA 来确定这个 IP 是用什么浏览器访问的,以得到使用量的数据。
02、根据用户使用浏览器的不同,显示不同的排版从而为用户提供更好的体验。 有些网站会根据这个来调整打开网站的类型,如是手机就打开 wap,非手机的就打开 pc 常规页面。用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的 UA 来判断的。
03、伪装 user agent 以回避某些侦测特定浏览器才能读取的网站。 如使用 Firefox 浏览器插件 User agent switcher,用户可轻松在不同 UA 之间切换,把自己伪装成其他浏览器。这样就可在 PC 上预览 WAP 或移动格式的网页,譬如:专为 iPhone 设计的页面。
user-agent 值
ASP.NET 使用 Request.Header["User-Agent"] 或 Request.UserAgent
Java 使用 request.getHeader(”User-Agent”)
Python 使用 Request.headers.get("User-agent")
PHP 使用:$_SERVER[HTTP_USER_AGENT];
JS 使用 navigator.userAgent
QtWebKit.QWebPage.userAgentForUrl(url) 函数
以下是正确代码形式:
- def userAgentForUrl(self, url):
- return user_Agent
复制代码
以下是可能会出现死循环的代码形式:
- def userAgentForUrl(self, url):
- p= N_Class()
- if c == "32bit":
- user_Agent = p.a
- else:
- user_Agent = p.b
-
- return user_Agent
复制代码
请关注 "德云社区" 及其微信公众号,了解相关资讯
版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。
|