python3 cookie_python3.4.3模拟网站登陆并保存cookies

下面代码实现自动登陆网站并保存cookies下次直接打开就可以import urllib.request

import urllib.parse

import http.cookiejar

import codecs

#请求头

headers = {

'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36',

'Referer':'http://www.XXXXXX.com/'#,

#'X-Requested-With':'XMLHttpRequest'

}

#创建一个带cookie的网络打开器,后面的get post请求都使用这个打开

ckjar=http.cookiejar.MozillaCookieJar('cookies.txt')

try:

"""加载已存在的cookie,尝试此cookie是否还有效"""

ckjar.load(ignore_discard=True, ignore_expires=True)

except Exception:

"""加载失败,说明从未登录过,需创建一个cookie kong 文件"""

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

ckproc=urllib.request.HTTPCookieProcessor(ckjar)

opener=urllib.request.build_opener(ckproc)

#get取网页数据

def geturl(url,data={}):

try:

global headers

global opener

params=urllib.parse.urlencode(data)#.encode(encoding='UTF8')

req=''

if params=='' :

req=urllib.request.Request(url)

else:

req=urllib.request.Request(url+'?%s'%(params))

#设置headers

for i in headers:

req.add_header(i,headers[i])

r=opener.open(req)

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

return r

except urllib.error.HTTPError as e:

print(e.code)

print(e.read().decode("utf8"))

#get取网页数据

def posturl(url,data={}):

try:

global headers

global opener

params=urllib.parse.urlencode(data).encode(encoding='UTF8')

req=urllib.request.Request(url,params,headers)

r=opener.open(req)

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

return r

except urllib.error.HTTPError as e:

print(e.code)

print(e.read().decode("utf8"))

#登陆用的用户名密码

da={'username':'xxxxxxxx','password':'xxxxxxxx'}

#登陆地址

loginurl='http://www.XXXXXX.com/login'

#第一次get请求

r=geturl(loginurl,{})

#下面特征说明是登陆成功界面

islogin=s1.find('登录成功')

if islogin==-1 :

#下载验证码

f2 = open( r'./downs/verify.png', 'wb' )

#验证码地址

urlSuning='http://www.XXXXXX.com/index.php'

f2.write(geturl(urlSuning,{}).read())

f2.close()

da['verify']=input('请输入验证码:')

#提交数据登陆

r=posturl(loginurl,da)

s1="%s"%r.read().decode()

#下面特征说明登陆成功

islogin=s1.find('登录成功')

#循环验证验证码

while islogin==-1 :

r=geturl(loginurl,{})

#下载验证码

f2 = open( r"./downs/verify.png", "wb" )

f2.write(geturl(urlSuning,{}).read())

f2.close()

print('验证码错误!')

da['verify']=input('请输入验证码:')

#提交数据登陆

r=posturl(loginurl,da)

s1="%s"%r.read().decode()

#下面特征说明登陆成功

islogin=s1.find('登录成功')

print('登陆成功')

input('请输入任意键继续...')

如果想使用浏览器的cookies的话就修改下面这段代码ckjar=http.cookiejar.MozillaCookieJar(os.path.join('C:\Users\abcd\AppData\Roaming\Microsoft\Windows\Cookies', 'cookies.txt'))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值