请教一个关于 python 的 GUI 问题

2016-12-16 15:45:28 +08:00
 deadofpeople

自己学习 python 动手做了 gui 的小程序,问题如下: 登录某网站进去后,怎么免登录打开指定的网址呢?登陆的时候要设置 http 的 header 中的 cookie 。 我试过 python 自带的 webbrowser 不能行(不能设置 cookie 吧?)

btw: 我看了某些应用,如:心蓝订票助手和 12306bypass 里面有个免登录打开 12306 ,所以我想试试 python 有没有类似的

各位 V 友,有了解的麻烦指点一二,谢谢了

2491 次点击
所在节点    Python
16 条回复
deadofpeople
2016-12-16 21:40:59 +08:00
别沉呀。
ihciah
2016-12-17 02:41:54 +08:00
这和 GUI 有啥关系…一件懵逼
thekoc
2016-12-17 12:21:02 +08:00
这个只有把 webbrowser 换了才行吧
deadofpeople
2016-12-19 09:28:42 +08:00
@ihciah 就是想实现这样的功能·
deadofpeople
2016-12-19 09:29:01 +08:00
@thekoc 有第三方的包么?
thekoc
2016-12-19 11:44:57 +08:00
@deadofpeople Selenium?
diffworld
2016-12-19 11:56:57 +08:00
可以写一个爬虫自动登录吗?用 requests
Simpleyyt
2016-12-19 12:18:57 +08:00
改用 pyQt?
deadofpeople
2016-12-19 15:41:09 +08:00
@thekoc 这个我有试过,貌似要先预装相关的浏览器才行,而且体验很不好,打开有延迟的。
deadofpeople
2016-12-19 15:42:20 +08:00
@diffworld 要看那个网站登录模块有没有做什么限制,比如:验证码之类的
deadofpeople
2016-12-19 15:42:50 +08:00
@Simpleyyt pyQt 没用过,我现在是用 wxpython 写的
deadofpeople
2016-12-19 15:46:34 +08:00
我看 心蓝订票助手和 12306bypass 还有其他某些软件登录进去直接能打开某地址(应该是设置了 cookie 之类的)。
不知道 C#是如何设置此类操作的
falseen
2016-12-20 00:43:04 +08:00
你的意思是在 gui 界面中登陆之后再打开外部浏览器 ?
deadofpeople
2016-12-20 13:39:58 +08:00
@falseen 是的,就是打开系统浏览器
falseen
2016-12-20 14:35:24 +08:00
打开外部浏览器的时候只能传递 url ,不能传递 cookie 。有一些网站网站支持在 url 中携带登陆信息(比如 QQ 空间之类的),这种网站就可以做到你说的“免登录”。估计你说的那个什么助手也是用的这个方法。

除了上面这种方法之外还有一些高级方法,就看你肯不肯花时间去做了。

方法一:
修改浏览器的 cookie 文件,把指定网站的 cookie 写进去,然后让浏览器去读取。当然如果浏览器有这种 api 的话最好。
(我曾经读取过 chrome 的 cookie 文件,但没有修改过,所以你要自己去试一下)

方法二:
用 Python 搭建一个小型的代理服务器,把要打开的外部链接作为参数传递到代理服务器上。比如你要打开 www.baidu.com ,你的代理服务器是 127.0.0.1 。那么你最终传递给浏览器的链接就是 127.0.0.1/?site=www.baidu.com (这里只是举个例子)。浏览器打开这个链接的时候会首先访问我们的代理服务器,代理服务器在接到这个链接的时候把 www.baidu.com 的 cookie 传递给浏览器。然后我们再在代理服务器上做一个跳转,让浏览器跳转到 www.baidu.com 上去就行了。这样浏览器访问 www.baidu.com 的时候就会携带上我们传递给它的 cookie 。
(这种方法稍微有点复杂,不知道你看懂没有)
deadofpeople
2016-12-21 18:09:43 +08:00
@falseen 谢谢回复,方法一我可以尝试下,方法二的话确实复杂了,不折腾了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/328109

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX