码迷,mamicode.com
首页 > 编程语言 > 详细

使用python的cookielib加载已保存的cookie维持登录状态

时间:2016-05-25 14:56:21      阅读:761      评论:0      收藏:0      [点我收藏+]

标签:

初学网络爬虫,参考

http://cuiqingcai.com/968.html以 及 http://blog.csdn.net/pleasecallmewhy/article/details/8923067

登录我自己学校的时候会遇到验证码的阻碍,比较简单的一个方法是绕过验证码,先手动登录一次,然后使用cookie保持登录状态。

可是这个登录的cookie怎么获得呢,在firefox中cookie是打包在一个文件中的,在ie中我居然找不到教务处网站的cookie……

文件找不到,但是这个cookie的value是可以找到的,通过fiddler或者HttpFox都可以, 然后我尝试了如http://tieba.baidu.com/p/3272054397提到的

For ck in cj :
  Ck.name=‘new name‘
  Ck.value=‘new value‘
  Cj.set_cookie(ck)
也无法正确添加,print了一下cookie,结果还是空白的。
 
官方文档的说明也很简单
技术分享
所以还是采用http://cuiqingcai.com/968.html 里提到的,使用
cookie = cookielib.MozillaCookieJar(filename)     ------->这里用到了MozillaCookieJar,和之前的CookieJar不一样哦
创建cookie,然后使用相关的save, load方法保存和加载cookie

因为要cookie要使用手动填写了验证码的,所以这里的save就是提供个模板,(这里输出response.read()应该会看到“登录已过期请重新登录”这样的字眼)
 1 import cookielib
 2 import urllib2
 3  
 4 #设置保存cookie的文件,同级目录下的cookie.txt
 5 filename = cookie.txt
 6 #声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
 7 cookie = cookielib.MozillaCookieJar(filename)
 8 #利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
 9 handler = urllib2.HTTPCookieProcessor(cookie)
10 #通过handler来构建opener
11 opener = urllib2.build_opener(handler)
12 #创建一个请求,原理同urllib2的urlopen
13 response = opener.open("登录后重定向的网址")
14 #保存cookie到文件
15 cookie.save(ignore_discard=True, ignore_expires=True)

打开这个保存的cookie,我的长这样

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This is a generated file!  Do not edit.

202.118.31.197    FALSE    /    FALSE        JSESSIONID    XFca9XUKVdIUyRz1xKSPvSK1kL0gHjcKHQkW6rs3MMyYwqV3rOja!1269920556

当然这个value值是不对的,如果对了就能登录了。。。

而正确的cookie如果用Flidder的工具查看就是

打个比方 Cookie: JSESSIONID=XFca9XUKVdIUyRz1xKasdasd0gHjcKHQkW6rs3MMyYwqV3rOja!1269920556

所以我们也就知道了要更改那些部分……

把正确的value填入以后再

 1 import cookielib
 2 import urllib2
 3  
 4 #创建MozillaCookieJar实例对象
 5 cookie = cookielib.MozillaCookieJar()
 6 #从文件中读取cookie内容到变量
 7 cookie.load(cookie.txt, ignore_discard=True, ignore_expires=True)
 8 #创建请求的request
 9 req = urllib2.Request("http://www.baidu.com")
10 #利用urllib2的build_opener方法创建一个opener
11 opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
12 response = opener.open(req)
13 print response.read()

o(︶︿︶)o 终于登录成功了,,,撒花,接下来就是用正则表达式处理一下html页面

使用python的cookielib加载已保存的cookie维持登录状态

标签:

原文地址:http://www.cnblogs.com/autoria/p/5526762.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!