selenium模拟登录,保存cookies
使用selenium模拟登录,并把cookies保存到本地
现在还没有遇到大家说的倒立文字验证码
等后面遇到了,再做验证码处理(只要正确登录,很大程度上不会弹出验证码。验证码处理代码已更新)
由于知乎对selenium做了反爬处理,故此处需要接管本地已打开的浏览器,具体参考这篇文章:https://blog.csdn.net/qq_42206477/article/details/86477446
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
import pickle
import time
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")#知乎对selenium做了反爬处理,故此处接管本地已打开的浏览器
browser = webdriver.Chrome(executable_path = 'D:\Documents\Downloads\chromedriver_win32\chromedriver.exe', options=chrome_options)
# 初次建立连接,随后方可修改cookie
browser.get("https://www.zhihu.com/signin")
browser.find_element_by_css_selector(".SignFlow-accountInput.Input-wrapper input").send_keys("用户名")
time.sleep(3)
browser.find_element_by_css_selector(".SignFlow-password input").send_keys("密码")
browser.find_element_by_css_selector(
".Button.SignFlow-submitButton").click()
time.sleep(10)
Cookies = browser.get_cookies()
cookie_dict = {
}
for cookie in Cookies:
#将cookie写入文件
f = open('zhihucookie'+cookie['name']+'.zhihu','wb')
#将对象序列化成文件
pickle.dump(cookie,f)
f.close()
cookie_dict[cookie['name']] = cookie['value']
browser.close()
使用cookies访问页面
使用我们保存在本地的cookies访问 https://www.zhihu.com
不再需要登录
chrome_options = Options()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(executable_path = 'D:\Documents\Downloads\chromedriver_win32\chromedriver.exe',options= chrome_options)
browser.get('https://www.zhihu.com') #必须要打开 不然set cookies时会出问题
# 删除第一次建立连接时的cookie
browser.delete_all_cookies()
# 读取登录时存储到本地的cookie
cookie_dict = {
}
dirs = os.listdir('存储cookies的本地地址')
for i in dirs: # 循环读取路径下的文件并筛选后缀名为zhihu的文件
if os.path.splitext(i