내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
목차
로그인을 이용하면 로그인할 때마다 반복되는 작업을 줄일 수 있고, 로그인 후 메뉴 페이지를 직접 조작할 수 있으며, 이미지 인증 로그인 작업 등 보안 인증 로그인 작업도 줄일 수 있습니다. 참고: 쿠키와 토큰에는 만료 날짜가 있습니다.
개발자 도구에서 직접 쿠키를 얻어 추가하세요. 아래 그림은 웹페이지에 있는 여러 사이트의 쿠키를 보여줍니다. 필요한 쿠키를 선택하여 추가하세요.
- 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()
예외 클래스(메시지, 화면, 스택 추적)를 발생시킵니다.
selenium.common.exceptions.InvalidCookieDomainException: 메시지: 잘못된 쿠키 도메인
(세션 정보: MicrosoftEdge=126.0.2592.87)
위의 오류가 발생하면 다음과 같이 wd.add_cookie(cookie_dict=cookie) 앞에 wd.get(URL) 줄을 추가할 수 있습니다.
- wd.get(URL)
- wd.add_cookie(cookie_dict=cookie)
- wd.get(URL)
인터페이스를 통해 쿠키 데이터를 얻은 후 셀레늄에 쿠키 사용량을 추가합니다.
- 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
Google 또는 엣지 브라우저에 입력하세요.chrome://version/ 或 edge://version/ 查看配置文件夹路径,
끝에서 기본값을 제거한 다음 경로 앞에 --user-data-dir=을 추가하여 원하는 경로를 연결합니다.
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()
참고: 이 방법을 사용할 경우 해당 브라우저 프로그램을 닫아야 합니다. 그렇지 않으면 오류가 보고되므로 실행하기 전에 해당 브라우저 프로세스를 종료해야 합니다. 위의 코드는 퍼지 일치 쿼리를 사용하여 프로세스를 종료하고 다음은 전체 일치입니다.
- 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()