使用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前后两张页面快照,发现第二张是成功登陆后的页面了