Teknologian jakaminen

Python Selenium -automaatio ilman kirjautumista (eväste ja tunnus)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Sisällysluettelo

Evästeetön kirjautuminen

Hanki evästeet käyttöliittymän kautta

Ota selaimen ohituskirjautuminen käyttöön

lisää tunnus


Kirjautumisen käyttäminen voi vähentää jokaisen kirjautumisen toistuvia toimintoja, käyttää valikkosivua suoraan sisäänkirjautumisen jälkeen ja voi myös vähentää suojausvarmennuskirjautumista, kuten kuvanvarmistuskirjautumistoimintoja. Huomautus: Evästeillä ja tunnuksilla on viimeinen voimassaolopäivä.

Evästeetön kirjautuminen

Hanki evästeet suoraan kehittäjätyökaluista ja lisää ne. Alla oleva kuva näyttää useiden verkkosivujen evästeet. Valitse vain tarvitsemasi.

  1. from selenium import webdriver
  2. from selenium.webdriver.edge.options import Options
  3. # 一般只需要name和value
  4. cookie = {'name': 'ZY44', 'value': 'tLonhTkz50iHzxjhIsaaaafferr:C'}
  5. options = Options()
  6. # options.add_argument('--headless')
  7. wd = webdriver.Edge(options=options)
  8. wd.add_cookie(cookie_dict=cookie)
  9. #for c in cookies: # 如果是多个cookie要添加,cookies存储为列表是,使用循环添加
  10. # wd.add_cookie(c)
  11. wd.refresh() # 刷新页面
  12. wd.get(URL)
  13. wd.quit()

nosta poikkeus_luokka(viesti, näyttö, pinojälki)
seleen.common.exceptions.InvalidCookieDomainException: Viesti: virheellinen evästeverkkotunnus
(Istunnon tiedot: MicrosoftEdge=126.0.2592.87)

Jos saat yllä olevan virheen, voit lisätä rivin wd.get(URL) ennen wd.add_cookie(cookie_dict=cookie) seuraavasti:

  1. wd.get(URL)
  2. wd.add_cookie(cookie_dict=cookie)
  3. wd.get(URL)

Hanki evästeet käyttöliittymän kautta

Kun olet hankkinut evästetiedot käyttöliittymän kautta, lisää evästeiden käyttö seleeniin

  1. def get_cookies():
  2. headers = {
  3. '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',
  4. }
  5. host = 'https://baike.baidu.com'
  6. req = requests.get(host, headers=headers)
  7. cookie_data = req.cookies.get_dict()
  8. cookies = []
  9. for key, value in cookie_data.items():
  10. cookies.append(dict(name=key, value=value))
  11. return cookies

Ota selaimen ohituskirjautuminen käyttöön

Kirjoita Google- tai Edge-selaimeen:chrome://version/   或  edge://version/ 查看配置文件夹路径,Poista oletusarvo lopussa ja lisää sitten ––user-data-dir= ennen polkua liittääksesi haluamamme polun.

profile_directory = r'--user-data-dir=C:UsersxxxAppDataLocalMicrosoftEdgeUser Data'

  1. # 这里使用模糊匹配,把edge开头的进程都杀掉
  2. if platform.system() == "Windows":
  3. os.system("taskkill -im msedge* -f")
  4. else:
  5. os.system("killall -9 msedge*")
  6. user_data = r'C:UsersxxxAppDataLocalMicrosoftEdgeUser Data'
  7. profile_directory = rf'--user-data-dir={user_data}'
  8. options = Options()
  9. # options.add_argument('--headless')
  10. options.add_argument(profile_directory)
  11. wd = webdriver.Edge(options=options)
  12. wd.maximize_window()
  13. wd.get(URL)
  14. wd.quit()

Huomautus: Kun käytät tätä menetelmää, sinun on suljettava vastaava selainohjelma, muuten raportoidaan virhe, joten sinun on lopetettava vastaava selainprosessi ennen suorittamista. Yllä oleva koodi käyttää sumeaa hakukyselyä lopettaakseen prosessin, ja seuraava koodi on täydellinen vastaavuus.

  1. returnCode=os.system('taskkill /F /iM chrome.exe') # 谷歌
  2. returnCode=os.system('taskkill /F /iM iexplore.exe') # IE
  3. returnCode=os.system('taskkill /F /iM firefox.exe') # 火狐
  4. returnCode=os.system('taskkill /F /iM msedge.exe') # edge
  5. assert returnCode==0 #判断浏览器进程是否杀完

lisää tunnus

  1. token = "my_token"
  2. options = Options()
  3. options.add_argument('--headless')
  4. wd = webdriver.Edge(options=options)
  5. wd.execute_script("window.localStorage.setItem('token', '%s');" % token) # 使用selenium执行js的操作添加token
  6. wd.maximize_window()
  7. wd.get(url)
  8. wd.quit()