网站建设企业号助手,贵阳景观设计公司,宁波住房和建设局网站,多个网站备案吗目录
cookie免登录
通过接口获取cookie
启用浏览器绕过登录
添加token 使用登录可以减去每次登录的重复操作#xff0c;直接操作系统登录后的菜单页面#xff0c;也可以减少安全验证登录#xff0c;如图像验证登录的操作。注意#xff1a;cookie和token都有有效期。
c…目录
cookie免登录
通过接口获取cookie
启用浏览器绕过登录
添加token 使用登录可以减去每次登录的重复操作直接操作系统登录后的菜单页面也可以减少安全验证登录如图像验证登录的操作。注意cookie和token都有有效期。
cookie免登录
直接从开发者工具中获取cookie进行添加下图为网页中多个站点的cookie挑选需要的进行添加即可。 from selenium import webdriver
from selenium.webdriver.edge.options import Options# 一般只需要name和value
cookie {name: ZY44, value: tLonhTkz50iHzxjhIsaaaafferr:C}options Options()
# options.add_argument(--headless)
wd webdriver.Edge(optionsoptions)wd.add_cookie(cookie_dictcookie)#for c in cookies: # 如果是多个cookie要添加cookies存储为列表是使用循环添加
# wd.add_cookie(c)wd.refresh() # 刷新页面wd.get(URL)wd.quit()
raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain (Session info: MicrosoftEdge126.0.2592.87)
如果有上面的报错可在wd.add_cookie(cookie_dictcookie) 前添加一行wd.get(URL)如下
wd.get(URL)
wd.add_cookie(cookie_dictcookie)
wd.get(URL)
通过接口获取cookie
通过接口获取cookie数据后在selenium添加cookie使用
def get_cookies():headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36,}host https://baike.baidu.comreq requests.get(host, headersheaders)cookie_data req.cookies.get_dict()cookies []for key, value in cookie_data.items():cookies.append(dict(namekey, valuevalue))return cookies
启用浏览器绕过登录
谷歌或edge浏览器中输入chrome://version/ 或 edge://version/ 查看配置文件夹路径去掉后面的 \Default然后在路径前加上 ––user-data-dir就拼接出我们要的路径了。
profile_directory r--user-data-dirC:\Users\xxx\AppData\Local\Microsoft\Edge\User Data # 这里使用模糊匹配把edge开头的进程都杀掉
if platform.system() Windows:os.system(taskkill -im msedge* -f)
else:os.system(killall -9 msedge*)user_data rC:\Users\xxx\AppData\Local\Microsoft\Edge\User Data
profile_directory rf--user-data-dir{user_data}options Options()
# options.add_argument(--headless)
options.add_argument(profile_directory)
wd webdriver.Edge(optionsoptions)wd.maximize_window()
wd.get(URL)wd.quit()
注意这种方法在使用时需要关闭对应浏览器的程序否则会报错所以在执行前需要杀掉对应浏览器的进程。上面代码使用模糊匹配查询杀掉进程下面是全匹配。
returnCodeos.system(taskkill /F /iM chrome.exe) # 谷歌
returnCodeos.system(taskkill /F /iM iexplore.exe) # IE
returnCodeos.system(taskkill /F /iM firefox.exe) # 火狐
returnCodeos.system(taskkill /F /iM msedge.exe) # edge
assert returnCode0 #判断浏览器进程是否杀完
添加token token my_tokenoptions Options()options.add_argument(--headless)wd webdriver.Edge(optionsoptions)wd.execute_script(window.localStorage.setItem(token, %s); % token) # 使用selenium执行js的操作添加tokenwd.maximize_window()wd.get(url)wd.quit()