
上QQ阅读APP看书,第一时间看更新
5.5 使用Cookies
Cookies主要用于获取用户登录信息,比如,通过提交数据实现用户登录之后,会生成带有登录状态的Cookies,这时可以将Cookies保存在本地文件中,下次程序运行的时候,可以直接读取Cookies文件来实现用户登录。特别对于一些复杂的登录,如验证码、手机短信验证登录这类网站,使用Cookies能简单解决重复登录的问题。
Urllib提供HTTPCookieProcessor()对Cookies操作,但Cookies的读写是由MozillaCookieJar()完成的。下面的例子实现Cookies写入文件,代码如下:

代码中的cookiejar是自动处理HTTP Cookie的类,MozillaCookieJar()用于将Cookies内容写入文件。程序运行时先创建MozillaCookieJar()对象,然后将对象直接传入函数HTTPCookieProcessor(),生成opener对象;最后使用opener对象访问URL,访问过程所生成的Cookies就直接写入已创建的文本文档中。
接着再看如何读取Cookies,代码如下:

读取和写入的方法很相似,主要区别在于:两者对MozillaCookieJar()对象的操作不同,导致实现功能也不同。运行结果如图5-2所示。

图5-2 验证Cookies
注意,为了方便测试,上述代码中使用的cookie.save()和cookie.load(filename)将Cookies内容显示在文本文档中。在实际开发中,为了提高安全性,可以在保存和读取Cookies时设置参数,使Cookies信息隐藏在文件中。方法如下:
