木骰

Cookie

Cookie是一种临时存储在本地的数据,经常听到登入了某个网站时间久了之后发生的Cookie过期,登录失效的事情。
Cookie是一些网站为了辨别用户身份或进行session跟踪而存储在用户本地终端的数据。

python3.0之后去掉了cookie模块,而把原先的cookiejar和FileCookieJar类包在了http模块里。使用该类下的cookiejar或FileCookieJar或MozillaCookieJar方法来构建一个cookie。然后使用HTTPCookieProcessor来构建一个cookie处理器,这个方法又包含在request模块里。
所以使用cookie需要http与request两个模块的配合。
使用携带cookie的方式访问一个网站需要自己来构建一个访问器opener,使用build_opener方法,包含在request模块。


     from http import cookiejar
     from urllib import request
     
     cookie=cookiejar.CookieJar();#使用cookieJar方法构建一个cookie
     handler=request.HTTPCookieProcessor(cookie)#使用request下的HTTPCookieProcessor方法构建一个cookie处理器
     
     opener=request.build_opener(handler)#用request下的build_opener方法构建一个opener,此时这个opener已经携带了cookie了,只是              
                                                                 #目前的cookie信息还是空的
     req=request.Request("http://www.xxxx.com") #正常构建req
     
     opener.open(req)#使用opener来发送请求,这时上边定义的cookie变量就被存储了访问网站之后的cookie了。

另外还可以用FileCookieJar或MozillaCookieJar来构建一个能将cookie保存到文件的cookie。并且也能从文件里读取cookie
特别注意 保存或者读取cookie必须携带上 ignore_discard=True,ignore_expires=True这两个参数


#cookie用来保存打开一个网站后的一些临时数据,一般用来存用户登入信息。
#访问一些需要登入的网页必须携带cookie信息才能正常访问,浏览器自动帮我们保存了cookie信息,
#而用python的话就得自己存储并携带cookie来访问网站了。
#python3.0之后去掉了cookielib模块,原来的cookiejar类被包在了http模块下 包括FileCookieJar类

from http import cookiejar
from urllib import request,parse

username=""
passwd=""
loginurl="http://"
afterloginurl="http://"
afterloginurl2="http://"

filename="./cookie.txt"
req=request.Request(loginurl)
cookie=cookiejar.MozillaCookieJar(filename)#使用MozillaCookieJar创建一个cookie
handler=request.HTTPCookieProcessor(cookie)#创建一个cookie处理器
opener=request.build_opener(handler)#创建一个访问器
data={
	"log":username,
	"pwd":passwd,
	"wp-submit":"登录",
	"redirect_to":afterloginurl
}
datacode=parse.urlencode(data);#构建post请求数据包

req=opener.open(req,data=datacode.encode("utf-8"))#发送请求

#登入成功后保存cookie到本地,为了以后可以用cookie直接访问
#注意save的时候一定要填上 这两个参数 ignore_discard=True,ignore_expires=True 
cookie.save(ignore_discard=True,ignore_expires=True);


#然后打开一个登入后的后台管理业,并把html输出到文件,之后打开html文件就能看到登入成功后的页面了
rep=opener.open(afterloginurl2)
log=open("./log.html","w")

print(rep.status,rep.reason)
log.write(rep.read().decode('utf-8'))
log.close();
— 于 共写了2003个字
— 文内使用到的标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*