使用cookie绕过验证码登录的实现代码

yizhihongxing

首先,在介绍使用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技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • javascript OFFICE控件测试代码

    为了测试Javascript Office控件,您需要遵循以下步骤: 步骤1:下载Office控件开发工具包 首先,您需要下载Office控件开发工具包,以便使用其中的控件进行测试。 您可以通过以下方式下载: 访问Microsoft官方网站下载必要的文件。 解压下载的zip文件,将其中的文件复制到您的工作目录中。 步骤2:建立Office控件应用程序 根据您…

    JavaScript 2023年5月27日
    00
  • js通过循环多张图片实现动画效果

    下面是 “JS通过循环多张图片实现动画效果” 的完整攻略。 实现思路 通过JavaScript的循环语句(如setInterval、setTimeout等)来交替切换多张图片的显示,从而实现动画效果。具体实现步骤如下: 将需要播放的图片按照顺序依次存储在一个数组中 定义一个计数器 index,用于记录当前需要播放的图片的下标 使用setInterval或者s…

    JavaScript 2023年6月10日
    00
  • cocos2dx骨骼动画Armature源码剖析(一)

    我来详细讲解一下“cocos2dx骨骼动画Armature源码剖析(一)”的完整攻略。 标题 一、背景介绍 在这一部分中,可以简要介绍一下本文所要讲解的主题和相关背景知识。比如,cocos2d-x 是一个跨平台的 2D 游戏引擎,支持多种编程语言,骨骼动画是该引擎的一个重要功能之一。 二、源码剖析 在这一部分中,可以详细剖析骨骼动画 Armature 的源码…

    JavaScript 2023年6月11日
    00
  • Web js实现复制文本到粘贴板

    要在Web页面中使用JavaScript实现将文本复制到剪贴板,需要使用Clipboard API。以下是实现此功能的完整攻略: 步骤一:检查浏览器兼容性 检查浏览器是否支持 Clipboard API: if (!navigator.clipboard) { console.log(‘浏览器不支持 Clipboard API.’); } 步骤二:编写复制到…

    JavaScript 2023年6月10日
    00
  • Js判断CSS文件加载完毕的具体实现

    判断CSS文件加载完毕的主要方法是检测link元素的load和error事件,具体步骤如下: 使用JavaScript将CSS文件插入HTML页面中,以确保JavaScript能够访问其link元素。 <link rel="stylesheet" href="style.css" id="css-lin…

    JavaScript 2023年6月11日
    00
  • JS+Canvas绘制抽奖转盘

    下面是详细讲解“JS+Canvas绘制抽奖转盘”的完整攻略: 一、准备工作 创建 HTML 文件并引入 Canvas(例如:) 获取 Canvas 对象,创建绘图上下文和 Canvas 尺寸 定义需要用到的变量(例如:奖项,概率,角度,旋转速度等) 二、绘制转盘基本结构和奖项 绘制转盘外圆和内圆 绘制奖项扇形,并填充不同的颜色 三、转盘动画 绑定旋转事件(例…

    JavaScript 2023年6月11日
    00
  • javascript阻止浏览器后退事件防止误操作清空表单

    下面我将详细讲解如何使用JavaScript阻止浏览器后退事件,以防止误操作清空表单。 什么是阻止浏览器后退事件? 在浏览器中,当我们按下”后退”按钮或点击浏览器的返回箭头时,浏览器会自动回退到上一个页面,这就是浏览器的后退事件。 但是,在某些情况下,我们不希望用户回退到上一个页面,比如在填写表单时,用户误操作点击了后退按钮,导致表单数据丢失。此时,我们可以…

    JavaScript 2023年6月11日
    00
  • js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?

    JavaScript立即执行函数是一种特殊的函数表达式,它可以立即自动运行,而不需要在其他地方调用。在JavaScript中,我们可以使用两种不同的声明方法来创建立即执行函数。第一种是使用普通的函数声明方法,代码如下: (function() { //code to be executed immediately })(); 这种声明方法使用一个内部或匿名函…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部