使用selenium时,如何通过cookie来模拟登陆?

现在许多网站的登陆都会比较复杂,有时直接使用Cookie模拟登陆不失为一个简单粗暴的方法。

使用Cookie来模拟登陆,就是用户在浏览器先登录网站,然后将Cookie信息拷贝出来,用来设置请求的Cookie。

以模拟登陆知乎为例:

 

from selenium import webdriver
from selenium.webdriver import Chrome,ChromeOptions

options = ChromeOptions()
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36') #设置User-Agent
options.add_argument('--headless') #无界面浏览器
options.add_argument("disable-blink-features=AutomationControlled")#去掉webdriver痕迹

driver = Chrome(options=options)
cookies = {"name1":"value1","name2":"value2"...}#用户通过浏览器登陆后,拿到的cookie信息
driver.get('https://www.zhihu.com/')#先访问一次知乎主页
driver.save_screenshot('zhihu1.png')#生成页面快照1
driver.delete_all_cookies()#清空所有cookie
#重新添加cookie
for name,value in cookies.items():
    driver.add_cookie({'domain':'.zhihu.com','httpOnly': False,'secure': False,'name':name,'value':value})
js = 'window.location.href = "https://www.zhihu.com"'
driver.execute_script(js)#通过js,在当前窗口中再次访问知乎主页
driver.save_screenshot('zhihu2.png') #生成页面快照2
driver.quit()#关闭浏览器

 

比较使用cookies前后两张页面快照,发现第二张是成功登陆后的页面了

 

posted @ 2021-04-20 01:28  eliwang  阅读(493)  评论(0编辑  收藏  举报