六 Selenium中免密登录和cookie操作
一 Selenium中免密登录实例(使用简书示例)
谷歌查看token

from django.test import TestCase from selenium import webdriver from selenium.webdriver.chrome.options import Options # Create your tests here. from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import Select import time options = webdriver.ChromeOptions() #屏蔽“Chrome正受到自动测试软件的控制”提示信息 options.add_experimental_option("excludeSwitches", ['enable-automation']) driver = webdriver.Chrome(chrome_options=options) driver.get("https://www.jianshu.com/u/d63796bf7581") sign_in = driver.find_element_by_css_selector("[href='/sign_in']") sign_in.click() username = driver.find_element_by_css_selector("input[placeholder = '手机号或邮箱']") username.send_keys('18236932541') password = driver.find_element_by_css_selector("input[placeholder='密码']") password.send_keys('a414630491') submit = driver.find_element_by_css_selector("button[type='button']") submit.click() #此时进行手动操作 time.sleep(10) #cookie 关键字 key = 'remember_user_token' user_token = driver.get_cookie(key) print(user_token) cookies = driver.get_cookies() print(cookies) driver.quit() cookie = {'name':key,'value':user_token['value']} driver = webdriver.Chrome() driver.get("https://www.jianshu.com/u/d63796bf7581") driver.add_cookie(cookie) driver.get("https://www.jianshu.com/u/d63796bf7581") time.sleep(3) driver.close()
二 Cookie详细介绍及使用fiddler抓包
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器.
Cookie操作的几个方法:
①get_cookies(): 获取所有的cookies
②get_cookie(name):获取指定 name 的 cookie
③delete_cookie(name):清除指定的cookie
④delete_all_cookies():清除所有的cookie
⑤add_cookie(cookie_dict):添加 cookie 的值
Cookie的组成部分:
cookie ={u'domain': u'.cnblogs.com',
u'name': u'.CNBlogsCookie',
u'value': u'xxxx',
u'expiry': 1491887887,
u'path': u'/',
u'httpOnly': True,
u'secure': False}
domain:服务器域名;
name:cookie的名称;
value:cookie对应的值,动态生成的;
expiry:cookie有效终止日期;
path:Path 属性定义了 Web 服务器上哪些路径下的页面可获取服务器设置的Cookie;
httpOnly:防脚本攻击;
secure:在 Cookie 中标记该变量,表明只有当浏览器和 Web Server 之间的通信协议为加密认证协议时浏览器才向服务器提交相应的 Cookie。当前这种协议只有一种,即为 HTTPS。
实例:通过cookie绕过验证码
注意:
(1)登录时候要勾选下次自动登录按钮.
(2) add_cookie()只添加 name 和 value,对于博客园的登录是不成功.
(3)本方法并不适合所有的网站,一般像博客园这种记住登录状态的才会适合
①先通过Fiddler抓包(先配置能够抓取到https)
②添加Cookie
from selenium import webdriver import time options = webdriver.ChromeOptions() options.add_argument('disable-infobars') driver =webdriver.Chrome(options=options) #启动浏览器后获取cookies print(driver.get_cookies()) driver.get('https://www.cnblogs.com/rwwh') #添加Cookie c1 ={u'domain':u'.cnblogs.com', u'name':u'.CNBlogsCookie', u'value':u'73431BB1759A9C32AD6F5DECDED7CCA554CE1F0CD608BA0F03F636B73E84D48F64C6A6B87FCD443A7B93A9E' u'54EF35909FCE008D7ED1E93973A8DB9A04099770FD08907F9925733DC1D1831417C041D5253E85E85', u'expiry':1550512158, u'path':u'/', u'httpOnly':True, u'secure':False } c2 ={u'domain':u'.cnblogs.com', u'name':u'..Cnblogs.AspNetCore.Cookies', u'value':u'CfDJ8KlpyPucjmhMuZTmH8oiYTMkcOEWKC0SA9hxlK5ZXpTk5AaUpWxwNIvCv7K9MBeZNqEdJGj5gAqSui3' u'qgzCGWPjDlMH2-06_wWB-H2PGGnwxevMO-Utl_UYJDJnO2hivO_wzHJfHumKSPhwE96BNRA5CPK9MWdVCN6vzuC_PZXvwmEC3R_mPW' u'5brBWclVWNTm73tJUCvGhDkgCZgo3EpR6lBDVVsORV0G7Lz9Yo06j_o53IieZDjQq26JGKNwW19KuxQd--_K76zt34nHXft-NmL0t1SyyIB89n_eDjrF4ti5UzsFAf84TITQHei8-kPow', u'expiry':1550512158, u'path':u'/', u'httpOnly':True, u'secure':False } driver.add_cookie(c1) driver.add_cookie(c2) time.sleep(3) driver.refresh() driver.find_element_by_id('blog_nav_newpost').click()
浙公网安备 33010602011771号