informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Daftar isi
Dapatkan cookie melalui antarmuka
Menggunakan login dapat mengurangi operasi berulang pada setiap login, mengoperasikan halaman menu secara langsung setelah login, dan juga dapat mengurangi login verifikasi keamanan, seperti operasi login verifikasi gambar. Catatan: Cookie dan token memiliki tanggal kedaluwarsa.
Dapatkan cookie langsung dari alat pengembang dan tambahkan. Gambar di bawah menunjukkan cookie dari beberapa situs di halaman web. Cukup pilih yang Anda perlukan dan tambahkan.
- 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()
naikkan exception_class(pesan, layar, stacktrace)
selenium.common.exceptions.InvalidCookieDomainException: Pesan: domain cookie tidak valid
(Info sesi: MicrosoftEdge=126.0.2592.87)
Jika Anda mendapatkan error di atas, Anda dapat menambahkan baris wd.get(URL) sebelum wd.add_cookie(cookie_dict=cookie), sebagai berikut:
- wd.get(URL)
- wd.add_cookie(cookie_dict=cookie)
- wd.get(URL)
Setelah mendapatkan data cookie melalui antarmuka, tambahkan penggunaan cookie di 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
Masuk ke Google atau browser edge:chrome://version/ 或 edge://version/ 查看配置文件夹路径,
Hapus Default di akhir, lalu tambahkan ––user-data-dir= sebelum jalur untuk menyambung jalur yang kita inginkan.
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()
Catatan: Saat menggunakan metode ini, Anda harus menutup program browser yang sesuai, jika tidak, kesalahan akan dilaporkan, jadi Anda harus mematikan proses browser yang sesuai sebelum dieksekusi. Kode di atas menggunakan kueri pencocokan fuzzy untuk menghentikan proses, dan berikut ini adalah pencocokan penuh.
- 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()