2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Table des matières
Obtenez des cookies via l'interface
Activer la connexion de contournement du navigateur
L'utilisation de la connexion peut réduire les opérations répétées de chaque connexion, faire fonctionner directement la page de menu après la connexion et peut également réduire la connexion de vérification de sécurité, telle que les opérations de connexion de vérification d'image. Remarque : les cookies et les jetons ont des dates d'expiration.
Obtenez les cookies directement à partir des outils de développement et ajoutez-les. L'image ci-dessous montre les cookies de plusieurs sites sur la page Web. Sélectionnez simplement ceux dont vous avez besoin et ajoutez-les.
- 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(options=options)
-
- wd.add_cookie(cookie_dict=cookie)
-
- #for c in cookies: # 如果是多个cookie要添加,cookies存储为列表是,使用循环添加
- # wd.add_cookie(c)
-
- wd.refresh() # 刷新页面
-
- wd.get(URL)
-
- wd.quit()
déclencher exception_class(message, écran, stacktrace)
selenium.common.exceptions.InvalidCookieDomainException : Message : domaine de cookie non valide
(Informations sur la session : MicrosoftEdge=126.0.2592.87)
Si vous obtenez l'erreur ci-dessus, vous pouvez ajouter une ligne de wd.get(URL) avant wd.add_cookie(cookie_dict=cookie), comme suit :
- wd.get(URL)
- wd.add_cookie(cookie_dict=cookie)
- wd.get(URL)
Après avoir obtenu les données des cookies via l'interface, ajoutez l'utilisation des cookies dans Selenium
- 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.com'
- req = requests.get(host, headers=headers)
- cookie_data = req.cookies.get_dict()
- cookies = []
- for key, value in cookie_data.items():
- cookies.append(dict(name=key, value=value))
- return cookies
Saisissez dans Google ou le navigateur Edge :chrome://version/ 或 edge://version/ 查看配置文件夹路径,
Supprimez la valeur par défaut à la fin, puis ajoutez ––user-data-dir= avant le chemin pour séparer le chemin souhaité.
profile_directory = r'--user-data-dir=C:UsersxxxAppDataLocalMicrosoftEdgeUser Data'
- # 这里使用模糊匹配,把edge开头的进程都杀掉
- if platform.system() == "Windows":
- os.system("taskkill -im msedge* -f")
- else:
- os.system("killall -9 msedge*")
-
- user_data = r'C:UsersxxxAppDataLocalMicrosoftEdgeUser Data'
- profile_directory = rf'--user-data-dir={user_data}'
-
- options = Options()
- # options.add_argument('--headless')
- options.add_argument(profile_directory)
- wd = webdriver.Edge(options=options)
-
- wd.maximize_window()
- wd.get(URL)
-
- wd.quit()
Remarque : lorsque vous utilisez cette méthode, vous devez fermer le programme de navigateur correspondant, sinon une erreur sera signalée, vous devez donc arrêter le processus de navigateur correspondant avant l'exécution. Le code ci-dessus utilise une requête de correspondance floue pour arrêter le processus, et ce qui suit est une correspondance complète.
- returnCode=os.system('taskkill /F /iM chrome.exe') # 谷歌
- returnCode=os.system('taskkill /F /iM iexplore.exe') # IE
- returnCode=os.system('taskkill /F /iM firefox.exe') # 火狐
- returnCode=os.system('taskkill /F /iM msedge.exe') # edge
- assert returnCode==0 #判断浏览器进程是否杀完
- token = "my_token"
-
- options = Options()
- options.add_argument('--headless')
- wd = webdriver.Edge(options=options)
-
- wd.execute_script("window.localStorage.setItem('token', '%s');" % token) # 使用selenium执行js的操作添加token
-
- wd.maximize_window()
- wd.get(url)
- wd.quit()