cookie绕过验证码登录操作

🏷️ 365视频游戏世界 📅 2025-08-14 00:01:34 👤 admin 👀 2694 ❤️ 774
cookie绕过验证码登录操作

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

前言

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

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

1、这里以登录博客园为例。

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

b、这里用Fiddler抓包工具进行,先手动登录一次,然后抓取cookie

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

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

2、cookie结构

.用抓包工具 fidller 只能看到 cookie 的 name 和 value 两个参数,实际上 cookie 还有其它参数的。

3、添加cookie

a、往 session 里面添加 cookie 可以用以下方式

b、set 里面参数按括号里面的参数格式

coo = requests.cookies.RequestsCookieJar()

coo.set('cookie-name', 'cookie-value', path='/', domain='.xxx.com')

s.cookies.update(c)

c、于是添加登录的 cookie,把第一步 fiddler 抓到的内容填进去就可以了

c = requests.cookies.RequestsCookieJar()

c.set('.CNBlogsCookie', 'xxx')

c.set('.Cnblogs.AspNetCore.Cookies','xxx')

s.cookies.update(c)

print(s.cookies)

4、参考代码

import requests

#禁用安全请求警告

from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

"""

1.由于登录时候是多加 2 个 cookie,我们可以先用 get 方法打开登录首页,获取部分 cookie

2.再把登录需要的 cookie 添加到 session 里

3.添加成功后,随便编辑正文和标题保存到草稿箱

"""

# 先打开登录首页,获取部分 cookie

url = "https://account.cnblogs.com/signin?returnurl=https%3A%2F%2Fwww.cnblogs.com%2F"

header = {

"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"

}

s = requests.Session()

r = s.get(url,headers=header)

print(r.cookies)

# 添加登录需要的两个 cookie

c = requests.cookies.RequestsCookieJar()

c.set(".Cnblogs.AspNetCore.Cookies","添加图二的cookie")

c.set(".CNBlogsCookie","添加图二的cookie")

# c.set('AlwaysCreateItemsAsActive',"True")

# c.set('AdminCookieAlwaysExpandAdvanced',"True")

s.cookies.update(c)

print(s.cookies)

# 登录成功后保存编辑内容

r1 = s.get("https://i.cnblogs.com/EditPosts.aspx?opt=1", headers=header,verify=False)

print(r1.text)

# 保存草稿箱

url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"

body = {

"__VIEWSTATE":"",

"__VIEWSTATEGENERATOR":"FE27D343",

"Editor$Edit$txbTitle":"Hi,你好",

"Editor$Edit$EditorBody":"

你们好吗 ?

Are you ok ?

",

"Editor$Edit$Advanced$ckbPublished":"on",

"Editor$Edit$Advanced$chkDisplayHomePage":"on",

"Editor$Edit$Advanced$chkComments":"on",

"Editor$Edit$Advanced$chkMainSyndication":"on",

"Editor$Edit$Advanced$txbEntryName":"",

"Editor$Edit$Advanced$txbExcerpt":"",

"Editor$Edit$Advanced$txbTag":"",

"Editor$Edit$Advanced$tbEnryPassword":"",

"Editor$Edit$lkbDraft":"存为草稿",

}

r2 = s.post(url2,data=body,verify=False)

print(r.content.decode("utf-8"))

5、执行后,刷新下草稿箱页面,查看我的草稿箱是否有新增。

selenium-跳过登录验证码

selenium最常见的就是登录,但是登录有个坑,就是验证码的问题,关于验证码一共四个办法:

1.让开发注释掉验证码。

2.让开发设置一个万能验证码,只要输入这个验证码,就通过。

3.跳过验证码直接登录成功。

4.验证码识别技术。

第三条写的很模糊,不过下面就介绍一下第三条的实现方法。

先说一下实现思路:

1.打开要测试的网页,获取登录前的cookie(可以抓包获取,可以代码实现,下面会附上代码)。

2.手动登录,再获取登录后的cookie。

3.对比两次获取的cookie,找出登录后多出来的cookie,只要多出来的name和value就行(一般name就是token)。

4.在代码里加上写入cookie,把找出来的name和value写入。然后再写一遍打开网页的代码。

下面放上代码(不要着急复制代码为自己所用,代码后面会写限制,有些登录用这代码也跳不过去,哈哈)。

#coding=utf-8

from selenium import webdriver

import time

#下面四行这么写是去掉谷歌浏览器上面提示的,第二行和第三行分别对应不同的提示

options = webdriver.ChromeOptions()

options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])

# options.add_argument('disable-infobars')

browser = webdriver.Chrome(chrome_options=options)

#

browser.maximize_window()

#打开火狐浏览器

# browser=webdriver.Firefox()

#输入网址

browser.get("https://m.flycua.com/h5/#/")

#点击登录,用下面注释的代码获取cookie,实现跳过登录,执行脚本的时候就不用这部分了

# browser.find_element_by_id("su").click()

# cookie1= browser.get_cookies()

#打印登录前的cookie

# print (cookie1)

#等待30秒,用这30秒时间完成登录操作

# time.sleep(30)

#获取登录后的cookie

# cookie2= browser.get_cookies()

#打印登录后的cookie

# print (cookie2)

#

#加入要获取的cookie,写进去

browser.add_cookie({'name':'tokenId', 'value':'8BB8FDD4FBB31F92424A7E0EBE872E01A4AF77654043DAD638E9F93B378F94E19A882A6C7E78999C9A5482985FDA333C3D1E5236C6BDA7935A89178F053FB490'})

#再次输入网址

browser.get("https://m.flycua.com")

上面代码包含了获取cookie和实现跳过登录的所有代码,注释部分一定要看清楚。(最早写的是用的python2,后来又拿到python3的环境上执行,根据自己python版本,对脚本略作修改,应该只有print要修改)

然后我再说一下这代码的局限性。

1.可以看出cookie里有tokenId,这个tokenId可以使用比较长的一段时间,前提是只执行这自动化脚本,不能再手动登录。因为手动登录又会产生一个新的tokenId,代码需要更新。

2.如果某些网站打开直接就是登录页,那恐怕就跳不过登录了,即使写入cookie,第二次打开的网页,仍然是登录页,即使写了登录后的网址。(我还见过更厉害的,登录之前和登录之后网址都不变)

相关推荐

青海最美的野花,你见过几种?
best365官网手机版

青海最美的野花,你见过几种?

📅 06-29 👀 7518
<strong>3.Monsoon Season 雨季</strong>
365视频游戏世界

3.Monsoon Season 雨季

📅 08-04 👀 2103