Python处理表单登陆(2)
2.处理cookies
在上一节登入完成之后,在代码的最后加入以下代码,保存此次登入的cookies
session.cookies.save()
cookies将会储存在代码所在的文件夹中。其中,cookies数据是已经经过加密处理的,每一个cookies大概会定义4个参数:
Set-Cookies : name = VALUR;
expires : DATA;
path = PATH;
domain = DOMAIN_NAME;
name是cookies的名称,一般会进行加密处理;expires是cookie的到期日期和时间;path是指cookie的路径;domain是指cookie所在的域名。
有了保存下来的cookies接下来就可以通过加载cookies实现登入。
import requests
import http.cookiejar as cookielib
#导入所需要的库
session = requests.session()
session,cookies = cookielib.LWPCookieJar(filename='cookies')
try:
session.cookies.load(ignore_discard=True)
except:
pritn("Cookie 未能加载")
#如果没有出现"Cookie 未能加载"说明cookies加载成功。
def isLogin():
url = "http://www.santostang.com/wp-admin/profile.php"
login_code = session.get(url,headers=headers,allow_redirects=False).status_code
if login_code == 200:
return True
else:
return False
#创建一个isLogin函数判断是否登入成功,allow_redirects=False意为禁止重定向
if __name__ == '__main__':
agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
headers = {
'Host' : 'www.santostang.com',
'Origin' : 'http://www.santostang.com',
'Referer' : 'http://www.santostang.com/wp-login.php',
'User-Agent' : agent
}
if isLogin():
print("您已经登入")
将第一部分与第二部分结合,在没有cookies的时候用账号密码登入,有cookies的时候加载cookies登入,组合成一下代码:
import requests
import http.cookiejar as cookielib
session = requests.session()
session,cookies = cookielib.LWPCookieJar(filename='cookies')
try:
session.cookies.load(ignore_discard=True)
except:
pritn("Cookie 未能加载")
def isLogin():
url = "http://www.santostang.com/wp-admin/profile.php"
login_code = session.get(url,headers=headers,allow_redirects=False).status_code
if login_code == 200:
return True
else:
return False
def Login(secret,account):
post_url = 'http://www.santostang.com/wp-login.php'
postdata = {
'pwd' : secret,
'log' : account,
'remember' : 'forever',
'redirect_to' : 'http://www.santostang.com/wp-admin',
'testcookie' : 1,
}
try:
#不需要验证码直接登入
login_page = session.post(post_url,data = pastdata,headers = headers)
login_code = login_page.text
print(login_page.status_code)
except:
pass
session.cookies.save()
if __name__ == '__main__':
agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
headers = {
'Host' : 'www.santostang.com',
'Origin' : 'http://www.santostang.com',
'Referer' : 'http://www.santostang.com/wp-login.php',
'User-Agent' : agent
}
if isLogin():
print("您已经登入")
else:
login('a12345','test')