python requests post cookies_Python3.6下的Requests登录及利用Cookies登录

利用Python中的Requests模块可以实现Post,Get等发送功能,我以登录某网站为例,记录使用Post发送用户名、密码及图形验证码,以及通过Cookies直接登录的内容。

1.利用POST发送用户名、密码及验证码。这里的验证码没有进行识别,只好先读取验证验图片,手动输入。

def LoginByPost():

imgUrl='http://***/authcode.php'

s=requests.session()

res=s.get(imgUrl,stream=True)

im=Image.open(BytesIO(res.content))

im.show()

code=input()

loginUrl='http://***/admin_loginCheck.php'

postData={'pname':'admin','password':'***','validateCode':code}

rs=s.post(loginUrl,postData)

url='http://***/***/admin_honor.php'

res=s.get(url)

res.encoding='utf-8'

print(res.text)

此时,可以看出我们已经成功登录,并输出指定页面的内容。

2.利用Cookies直接登录。无需用户名、密码及验证码。此时,需要先获得登录该网站后的Cookies,一种方法是通过浏览器查看Cookies,另一种方法是利用上面的requests.session获取登录后的Cookies。我们采用第二种方式。

(1)通过requests.session获取Cookies。

def GetCookie():

imgUrl='http://***/authcode.php'

s=requests.session()

print(s.cookies.get_dict())#先打印一下,此时一般应该是空的。

res=s.get(imgUrl,stream=True)

im=Image.open(BytesIO(res.content))

im.show()

code=input()

loginUrl='http://***/admin_loginCheck.php'

postData={'pname':'admin','password':'***','validateCode':code}

rs=s.post(loginUrl,postData)

c=requests.cookies.RequestsCookieJar()#利用RequestsCookieJar获取

c.set('cookie-name','cookie-value')

s.cookies.update(c)

print(s.cookies.get_dict())

(2)利用上面获取的Cookies直接登录

def DirLogin():

s=requests.session()

url='http://***/***/admin_honor.php'

headers={

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Encoding': 'gzip, deflate',

'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',

'Cache-Control': 'max-age=0',

'Connection': 'keep-alive',

'Host': '***',

'Referer': 'http://***/***/admin_index.php'

}

cookies={'PHPSESSID': 'cnguud4r1hmn3passs906odp21'}#这里就是利用上面的函数获得的Cookies

rs=s.get(url,headers=headers,cookies=cookies,verify=False)

rs.encoding='utf-8'

print(rs.text)

你可能感兴趣的:(python,requests,post,cookies)