首先,在介绍使用cookie绕过验证码登录的实现前,有必要了解一下什么是cookie。
什么是cookie
在前后端分离的web应用中,一般使用cookie来维持用户的登陆状态,如购物车、身份认证、页面交互等。cookie是一种储存在用户浏览器中的小型文本文件,通常包含一些用于搜索查询、网站记住用户信息、统计网站访问数量和收集访客习惯数据等等。具体实现方式是服务器通过设置HTTP头信息,将相关的键值对(for example:username=admin)发送给客户端浏览器,浏览器再把这些信息储存在本地文件中,当再次访问同一站点时,客户端浏览器会根据相同的域名和路径发送cookie信息到服务端。
有了cookie的基础认识,我们接着来讲解如何使用cookie绕过验证码的实现代码和攻略了。
使用cookie绕过验证码登录的实现代码
一般情况下,爬虫程序要访问某些网站时,必须填写验证码,而且造成爬虫程序的访问异常。不过,如果我们获取到了该网站的cookie信息,将其设置到爬虫程序中,便可以实现绕过验证码的登录。
具体实现步骤如下:
1.在登录页面,填写账号密码,然后获取到登录页的cookie信息
import requests
#构造登录表单数据
loginData = {"username":"admin","password":"admin123"}
#构造请求头信息
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'}
#向登录页发送post请求
response = requests.post("http://www.test.com/login",data=loginData,headers=headers)
#获取到响应页面的cookie信息
cookie = response.cookies
2.将获取到的cookie信息设置到爬虫程序中,即可模拟登录成功,获取到网站的数据信息
import requests
#将先前获取到的cookie信息设置到爬虫程序中
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36', 'cookie':'username=admin; password=admin123'}
#向所需的网站发送get或post请求,获取其数据
response = requests.get("http://www.test.com/data", headers=headers)
通过以上两步操作,我们便可以实现使用cookie绕过验证码登录的过程。
下面再给出另一个示例来说明。例如有一个网站,其验证码校验是通过和后台储存的随机码进行比对,只有在比对成功后才能登录,并在浏览器保存一段时间的登录状态,不过由于存在短时间内多次出错锁定的防护机制,造成许多人无法登录。那么我们便可以通过以下的代码用cookie代替验证码的校验:
import requests
#构造登录表单数据
username='admin'
password='admin123'
#构造请求头信息,设置一个Referer参数,值为我们登录的url,这样就能获得服务端返回的cookie信息
headers = {'Referer': 'http://www.test.com/login'}
#向登录页发请求,获取cookie
response = requests.get('http://www.test.com/login', headers=headers)
#获取到验证码随机码
code=response.cookies['code']
#构造登录页表单数据,包括验证码校验随机码和登录信息
loginData = {"username":username,"password":password,'code':code}
#向登录页面发送post请求
response = requests.post("http://www.test.com/login",data=loginData,headers=headers,cookies=response.cookies)
#获取到响应的cookie信息,这里我们获取的是服务端返回的cookie数据
cookie = response.cookies
#构造新的请求头信息,设置cookies参数值为服务端返回的cookie数据
headers = {'cookie':cookie}
#向所需要获取数据的网站发送get或post请求,获取其数据信息
response = requests.get("http://www.test.com/data", headers=headers)
综上所述,以上是使用cookie绕过验证码登录的实现代码和攻略,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用cookie绕过验证码登录的实现代码 - Python技术站