selenium(java)通过Cookie跳过登录验证码
来源:互联网 发布:hangman游戏 java 编辑:程序博客网 时间:2024/06/06 02:16
学习selenium的Cookie这一节,用了很多时间都没有成功捕获登录信息实现自动登录,如果只是单纯使用getCookies()方法并不能获取Cookie里关键参数的name和value。,比如通过firebug,虽然可以看到www.baidu.com这个网页的cookie内容,但是实际允许登录的“BDUSS”这个参数并没有在cookie内容里体现。
最后还是搜到了虫师的文章,详细讲了如何通过fiddler抓包工具获取baidu的cookie的重要参数信息。
这里再补充一下,由于Host为"passport.baidu.com"的消息有很多条,需要找到Host为"passport.baidu.com",URL为v2/api/?login 的消息,查看右侧窗口Response里Set-Cookie的内容。
Cookie的处理分为:
服务器向客户端发送cookie
浏览器将cookie保存
之后每次http请求浏览器都会将cookie发送给服务器端
服务器端向客户端发送Cookie是通过HTTP响应报文实现的,在Set-Cookie中设置需要像客户端发送的cookie。参考文章:通过Cookie跳过登录验证码
准备工具:
------------------
fiddler
Python+selenium
------------------
以百度登录为例。
验证码是汉字的,我想通过程序识别起来有点难度,也会比较麻烦。
接下来开始动手。
1、开启Fiddler 工具,像这样!
2、通过浏览器登录正常登录百度账号。像这样!
3、通过Fiddler获取登录请求的Cookie。找到Host为“passport.baidu.com”的URL,在右侧窗口查看该请求的Cookie。
然后,找到重要的两个参数“BAIDUID”和“BDUSS”。
4、编写Selenium自动化测试脚本,跳过登录。
from selenium import webdriverdriver = webdriver.Chrome()driver.get("https://www.baidu.com")# 添加Cookiedriver.add_cookie({'name':'BAIDUID','value':'AAAAAAAAAAAAAA:FG=1'})driver.add_cookie({'name':'BDUSS','value':'AAAAAAAAAAAAAAAAAAAAAAAAAA'})# 刷新页面driver.refresh()# 获取登录用户名并打印username = driver.find_element_by_class_name("user-name").textprint(username)#关闭浏览器driver.quit()
首先,访问百度首页,处于未登录状态。
然后,通过Selenium所提供add_cookie()方法添加Cookie信息。
最后,刷新页面,现在已经是登录状态了,获取登录之后的用户名并打印。
附上自己用java实现的代码:
package cookie;import java.util.Set;import org.apache.http.auth.UsernamePasswordCredentials;import org.openqa.selenium.By;import org.openqa.selenium.Cookie;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;public class CookieBaidu {public static void main(String[] args) throws InterruptedException {WebDriver driver = new FirefoxDriver();driver.get("http://www.baidu.com");Thread.sleep(3000);System.out.println(driver.manage().getCookies());// 通过fiddler抓包工具,找到Host为“passport.baidu.com”的URL,在右侧窗口查看该请求的Cookie,// 找到重要的两个参数“BAIDUID”和“BDUSS”Cookie c1 = new Cookie("BAIDUID", "66666666666666666666666:FG=1");Cookie c2 = new Cookie("BDUSS", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN~e-lnf3vpZc");driver.manage().addCookie(c1);driver.manage().addCookie(c2);driver.navigate().refresh();// 获得登录用户名String username = driver.findElement(By.className("user-name")).getText();System.out.println("username = " + username);System.out.println(driver.manage().getCookies());Thread.sleep(3000);driver.quit();}}
- selenium(java)通过Cookie跳过登录验证码
- selenium通过cookie跳过登录验证
- Selenium自动化测试:如何使用cookie跳过验证码登录
- 自动化测试 -- 通过Cookie跳过登录验证码
- 自动化测试 -- 通过Cookie跳过登录验证码
- 自动化测试 -- 通过Cookie跳过登录验证码
- Selenium WebDriver对cookie进行处理绕过登录验证码
- selenium + python 通过cookie来实现登录
- python利用cookie跳过验证码登录,直接获取二级页面内容
- skip_before_filter登录跳过验证必备
- java 模拟登录新浪微博(通过cookie)
- UI自动化测试登录如何跳过验证码
- python+selenium识别验证码并登录
- python+selenium识别验证码并登录
- iOS UIWebView 通过 cookie 完成自动登录验证
- iOS UIWebView 通过 cookie 完成自动登录验证
- iOS UIWebView 通过 cookie 完成自动登录验证
- iOS UIWebView 通过 cookie 完成自动登录验证
- 用递归函数将栈倒序
- MySQL5.7开启远程连接
- 匿名内部类
- 银行卡号4位分隔JS
- 20171102
- selenium(java)通过Cookie跳过登录验证码
- 安卓CRC16校验中遇到的问题和解决方案
- Codeforces Round #Pi (Div. 2) F. Mausoleum dp
- 移动端H5实现图片上传
- ArcGIS API For Javascript GP工具 Printing Tools导出地图或者打印地图(一):GP 服务Printing Tools
- Android多渠道打包
- iScroll-5 API 中文版
- IM云服务领域,融云因何得以登上浪潮之巅?
- 基础知识点