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
zwik
V2EX  ›  Python

Python 带 cookie 模拟登录切换多个帐号时,该如何清除 cookie?

  •  
  •   zwik · 2017-11-13 18:06:16 +08:00 · 5997 次点击
    这是一个创建于 2356 天前的主题,其中的信息可能已经有所发展或是发生改变。

    import cookielib

    import urllib2 import cookielib

    filename = 'cookie.txt'

    cookie = cookielib.MozillaCookieJar(filename) opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) postdata = urllib.urlencode({ 'stuid':'201200131012', 'pwd':'23342321' })

    loginUrl = '略'

    result = opener.open(loginUrl,postdata)

    cookie.save(ignore_discard=True, ignore_expires=True)

    gradeUrl = '略'

    result = opener.open(gradeUrl) print result.read()

    当我要切换另一个帐号时,请问如何清除这个全局的 cookie ?

    14 条回复    2017-11-14 09:34:34 +08:00
    Trim21
        1
    Trim21  
       2017-11-13 18:08:17 +08:00
    用 requests 的 session,新建一个 session
    warcraft1236
        2
    warcraft1236  
       2017-11-13 18:08:21 +08:00
    难道不是 close 这个 connection,然后重新发起一个链接吗?
    zwik
        3
    zwik  
    OP
       2017-11-13 18:09:08 +08:00 via Android
    @Trim21 好吧 我试试
    xydche
        4
    xydche  
       2017-11-13 18:09:14 +08:00 via Android
    同一楼,用 session 应该可以
    wd
        5
    wd  
       2017-11-13 18:27:27 +08:00 via iPhone
    直接把 cookie 文件删可以不
    Kilerd
        6
    Kilerd  
       2017-11-13 20:21:04 +08:00   ❤️ 1
    说了多少次,没能力 /新手就不要碰 urllib。 好好的 requests 放着不用干嘛折腾?

    坑爹的国内辣鸡低级教程,复制来复制去,都不肯更新一下文章
    zwik
        7
    zwik  
    OP
       2017-11-13 21:13:43 +08:00
    @Trim21 我把 session 放一个函数里了,但是多次调用存在同一个 session 的情况? session 需要手动结束吗
    zwik
        8
    zwik  
    OP
       2017-11-13 21:15:13 +08:00
    @Kilerd 说得好,下次直接从 requests 开始用 还真是一大堆复制粘贴 /😂
    Trim21
        9
    Trim21  
       2017-11-13 21:23:38 +08:00
    @zwik #7 session 会自动管理 cookies,如果你需要清空 cookies 就新生成一个 session 进行请求
    session 会自动销毁,不需要手动结束.
    q397064399
        10
    q397064399  
       2017-11-13 21:28:33 +08:00
    @zwik #8 session 的实现 就是依赖 cookie 中特定的字段
    Trim21
        11
    Trim21  
       2017-11-13 21:41:46 +08:00
    @Trim21 #9 ps, requests 的 get,post 等方法就是新建了一个 session 然后调用了 session 的 get 或者 post,只是没把 session 返回来,只把结果给你返回来了..
    zwik
        12
    zwik  
    OP
       2017-11-13 22:15:39 +08:00
    @Trim21 是这样用吧?
    def getImg():
    s = requests.Session()
    s.get(loginPage,headers=header)
    r = s.post(subUrl,data=postData)
    r = s.get(imageUrl)
    Trim21
        13
    Trim21  
       2017-11-13 23:09:28 +08:00
    @zwik #12 是
    xNathan
        14
    xNathan  
       2017-11-14 09:34:34 +08:00
    用 requests 建一个全局 session:
    s = requests.Session()

    清除 cookies:
    s.cookies.clear()
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1103 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:18 · PVG 07:18 · LAX 16:18 · JFK 19:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.