V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
deadofpeople
V2EX  ›  Python

请教一个关于 python 的 GUI 问题

  •  
  •   deadofpeople · 2016-12-16 15:45:28 +08:00 · 2257 次点击
    这是一个创建于 2660 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    16 条回复    2016-12-21 18:09:43 +08:00
    deadofpeople
        1
    deadofpeople  
    OP
       2016-12-16 21:40:59 +08:00
    别沉呀。
    ihciah
        2
    ihciah  
       2016-12-17 02:41:54 +08:00 via iPhone
    这和 GUI 有啥关系…一件懵逼
    thekoc
        3
    thekoc  
       2016-12-17 12:21:02 +08:00
    这个只有把 webbrowser 换了才行吧
    deadofpeople
        4
    deadofpeople  
    OP
       2016-12-19 09:28:42 +08:00
    @ihciah 就是想实现这样的功能·
    deadofpeople
        5
    deadofpeople  
    OP
       2016-12-19 09:29:01 +08:00
    @thekoc 有第三方的包么?
    thekoc
        6
    thekoc  
       2016-12-19 11:44:57 +08:00
    @deadofpeople Selenium?
    diffworld
        7
    diffworld  
       2016-12-19 11:56:57 +08:00
    可以写一个爬虫自动登录吗?用 requests
    Simpleyyt
        8
    Simpleyyt  
       2016-12-19 12:18:57 +08:00
    改用 pyQt?
    deadofpeople
        9
    deadofpeople  
    OP
       2016-12-19 15:41:09 +08:00
    @thekoc 这个我有试过,貌似要先预装相关的浏览器才行,而且体验很不好,打开有延迟的。
    deadofpeople
        10
    deadofpeople  
    OP
       2016-12-19 15:42:20 +08:00
    @diffworld 要看那个网站登录模块有没有做什么限制,比如:验证码之类的
    deadofpeople
        11
    deadofpeople  
    OP
       2016-12-19 15:42:50 +08:00
    @Simpleyyt pyQt 没用过,我现在是用 wxpython 写的
    deadofpeople
        12
    deadofpeople  
    OP
       2016-12-19 15:46:34 +08:00
    我看 心蓝订票助手和 12306bypass 还有其他某些软件登录进去直接能打开某地址(应该是设置了 cookie 之类的)。
    不知道 C#是如何设置此类操作的
    falseen
        13
    falseen  
       2016-12-20 00:43:04 +08:00
    你的意思是在 gui 界面中登陆之后再打开外部浏览器 ?
    deadofpeople
        14
    deadofpeople  
    OP
       2016-12-20 13:39:58 +08:00
    @falseen 是的,就是打开系统浏览器
    falseen
        15
    falseen  
       2016-12-20 14:35:24 +08:00   ❤️ 1
    打开外部浏览器的时候只能传递 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
        16
    deadofpeople  
    OP
       2016-12-21 18:09:43 +08:00
    @falseen 谢谢回复,方法一我可以尝试下,方法二的话确实复杂了,不折腾了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2833 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:32 · PVG 22:32 · LAX 07:32 · JFK 10:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.