前言

有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接)。

获取不到也没关系,可以通过添加cookie的方式绕过验证码。

另一篇博文  Python Selenium Cookie 绕过验证码实现登录  介绍了另外一种处理方式,及实际项目应用实战,有兴趣的同学可以点击查看。

一、抓登录cookie

1.登录后会生成一个已登录状态的cookie,那么只需要直接把这个值添加到cookies里面就可以了。

2.可以先手动登录一次,然后抓取这个cookie,这里就需要用抓包工具fiddler了

3.先打开博客园登录界面,手动输入账号和密码(勾选下次自动登录)

4.打开fiddler抓包工具,刷新下登录首页,就是登录前的cookie了

5.登录成功后,再查看cookie变化,发现多了两组参数,多的这两组参数就是我们想要的,copy出来,一会有用

代码实例:

# baseinfo -> __init__
#-*-coding:utf-8-*-
# Time:2017/9/23 17:44
# Author:YangYangJun loginUrl = "https://passport.cnblogs.com/user/signin" loginHeaders = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36"
} CNBlogsCookie = '通过抓包工具获取该Cookie' CnblogsAspNetCoreCookies = '通过抓包工具获取该Cookie' editUrl = 'https://i.cnblogs.com/EditPosts.aspx?opt=1'
#-*-coding:utf-8-*-
# Time:2017/9/23 10:15
# Author:YangYangJun import requests
#导入配置文件
import baseinfo #登录访问地址
loginUrl = baseinfo.loginUrl
#请求头
loginHeaders = baseinfo.loginHeaders #登录后Cookie1
CNBlogsCookie = baseinfo.CNBlogsCookie
#登录后Cookie2
CnblogsAspNetCoreCookies = baseinfo.CnblogsAspNetCoreCookies
#新建随笔方位地址
editUrl = baseinfo.editUrl
#获取session
s = requests.session() #
#r = s.get(loginUrl,headers = loginHeaders,verify = False ) #获取cookie
c = requests.cookies.RequestsCookieJar() # 添加登录需要的两个cookie
c.set(".CNBlogsCookie",CNBlogsCookie)
c.set('.Cnblogs.AspNetCore.Cookies',CnblogsAspNetCoreCookies)
#更新cookie
s.cookies.update(c) body = {"__VIEWSTATE": "",
"__VIEWSTATEGENERATOR":"FE27D343",
"Editor$Edit$txbTitle":"这是绕过登录的标题: -*- Bluesky -*-",
"Editor$Edit$EditorBody":"<p>这里是中文内容:http://www.cnblogs.com/Skyyj/</p>",
"Editor$Edit$Advanced$ckbPublished":"on",
"Editor$Edit$Advanced$chkDisplayHomePage":"on",
"Editor$Edit$Advanced$chkComments":"on",
"Editor$Edit$Advanced$chkMainSyndication":"on",
"Editor$Edit$lkbDraft":"存为草稿",
}
r2 = s.post(editUrl, data=body, verify=False)
#获取请求返回的响应信息
print r2.content

body中的值是可以通过开发者模式查看,如下图:

填写标题

response的返回内容还有其它更多信息

-- r.status_code     #响应状态码
-- r.content           #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
-- r.headers          #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
-- r.json()             #Requests中内置的JSON解码器
-- r.url                  # 获取url
-- r.encoding         # 编码格式
-- r.cookies           # 获取cookie
-- r.raw                #返回原始响应体
-- r.text               #字符串方式的响应体,会自动根据响应头部的字符编码进行解码
-- r.raise_for_status() #失败请求(非200响应)抛出异常

Python - Cookie绕过验证码登录的更多相关文章

  1. cookie绕过验证码登录

    #coding:utf-8 ''' cookie绕过验证码登录,第一步先访问登录页面获取登录前的cookie,第二步用fiddler抓到的手动登录的cookie加入cookie中,登录成功,第三步登录 ...

  2. python接口自动化(十三)--cookie绕过验证码登录(详解)

    简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...

  3. 通过cookie绕过验证码登录

    在我们做自动化的时候碰到一些比较难破解的验证码时是非常头疼的,一般来说最好的办法就是让开发屏蔽,这样最有益身心健康. 那么今天我介绍的这个方法也挺简单的,就是通过添加cookie的方式绕过验证码直接登 ...

  4. Requests方法 -- cookie绕过验证码登录操作

    前言有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加 cookie 的方式绕过验证码. 1.这里以登录博 ...

  5. Python Selenium Cookie 绕过验证码实现登录

    Python Selenium Cookie 绕过验证码实现登录 之前介绍过博客园的通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1. ...

  6. python接口自动化(Cookie_绕过验证码登录)

     python接口自动化(Cookie_绕过验证码登录) 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以 ...

  7. Python+fiddler(基于Cookie绕过验证码自动登录)

    案例:使用Cookie绕过百度验证码自动登录账户 步骤: 1.浏览器进入百度首页,点击登录按钮,输入相关信息(注意:暂时不要点击登录按钮) 2.进入fiddler,首先获取证书,Tools--> ...

  8. python接口自动化-Cookie_绕过验证码登录

    前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...

  9. python接口自动化:绕过验证码登录

    上线产品的登录接口会有验证码,一般可以通过添加cookie的方式绕过验证码. 一.抓登录的cookie 1. 先手动登录一次,然后用fiddler抓取这个cookie,再直接把这个值添加到cookie ...

随机推荐

  1. UVM中Callback机制

    Callback机制,其实是使用OOP来实现的一种程序开发者向程序使用者提供的模块内部的接口.可以在Test_case的高度改变其他component的一些行为. Systemverilog中已经提供 ...

  2. Lower Power with CPF(二)

    CPF文件可以有两种组织方式:Flat CPF file or Hierarchical CPF file. 由于在大型的SoC设计中,一般都采用Hierarchical的形式,所以本文主要按这个方式 ...

  3. CE寻找游戏基址

    什么是游戏基址? 游戏基址是保持恒定的两部分内存地址的一部分并提供一个基准点,从这里可以计算一个字节数据的位置.基址伴随着一个加到基上的偏移值来确定信息准确的位置(绝对地址). 全局基址 一级基址 二 ...

  4. yii2 restful api——app接口编程实例

    <?php namespace common\components; use common\models\Cart; use common\models\User; use Yii; use y ...

  5. zw版【转发·台湾nvp系列Delphi例程】HALCON Roberts1

    zw版[转发·台湾nvp系列Delphi例程]HALCON Roberts1 procedure TForm1.Button1Click(Sender: TObject);var img, img1: ...

  6. uva12206 后缀数组

    这题说的是给了一串字符 我们要将这个字符 中找出至少出现m次的最长字符串 一个字符课多次使用 利用后缀数组计算最长的lcp 这里有一个点 记得将后缀数组中加入一个空串 如果遇到全部相同的字符时 没办法 ...

  7. 关于在ASP.NET中使用JavaScript的建议

    一个很恼人的情况,就是当你使用JS在一个ASP,NET应用程序中引用一个在模板页初始化的服务器控件的时候: 比如,我们在模板页有一个TextBox的服务器控件,而且我们想要去获取他的Text:如果你使 ...

  8. 聊聊WKWebView

    聊一聊WKWebView 前言 由于之前一直在用UIWebView,所以对于WKWebView只是停留在知道,了解的状态,并未深入的去研究.前天一个项目要求支持iOS8以上,要加入一个web界面.在习 ...

  9. linux常用命令:watch 命令

    watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...

  10. 论文笔记之《Event Extraction via Dynamic Multi-Pooling Convolutional Neural Network》

    1. 文章内容概述 本人精读了事件抽取领域的经典论文<Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networ ...