Heim  >  Artikel  >  Backend-Entwicklung  >  Selenium + Cookie überspringt die Implementierungsschritte für die Anmeldung mit dem Bestätigungscode. Detaillierte Erklärung

Selenium + Cookie überspringt die Implementierungsschritte für die Anmeldung mit dem Bestätigungscode. Detaillierte Erklärung

php中世界最好的语言
php中世界最好的语言Original
2018-04-12 09:53:185767Durchsuche

Dieses Mal bringe ich Ihnen Selenium+Cookie zum Überspringen des Bestätigungscodes-Login-Implementierungsschritten. Was sind die Vorsichtsmaßnahmen für Selenium+Cookie zum Überspringen des Bestätigungscodes zum Anmelden? Im Folgenden werfen wir einen Blick auf praktische Fälle.

Ich habe zuvor die Methode zur Umgehung des Bestätigungscodes für die Anmeldung über Cookies eingeführt. Hier gibt es nichts Überflüssiges, wir werden eine Analyse und eine weitere Methode zur Implementierung der Anmeldung hinzufügen.

1. Einführung in die Ideen

1.1. Schauen Sie sich den Code direkt an, mit detaillierten Kommentaren

# FileName : Wm_Cookie_Login.py
# Author  : Adil
# DateTime : 2018/3/20 19:47
# SoftWare : PyCharm
from selenium import webdriver
import time
url = 'https://system.address'
def login():
  '''先定义一个正常登录的方法,获取登录前和登录后的cookie'''
  driver = webdriver.Chrome()
  driver.get(url)
  driver.maximize_window()
  cookieBefore = driver.get_cookies()
  # 打印登录前的cookie
  print(cookieBefore)
  time.sleep(2)
  driver.find_element_by_id("new-username").clear()
  driver.find_element_by_id("new-username").send_keys("username")
  driver.implicitly_wait(5)
  driver.find_element_by_id("new-password").clear()
  driver.find_element_by_id("new-password").send_keys("password")
  driver.find_element_by_id('home-right-login').click()
  driver.implicitly_wait(5)
  # 加一个休眠,这样得到的cookie 才是登录后的cookie,否则可能打印的还是登录前的cookie
  time.sleep(5)
  print("登录后!")
  cookiesAfter = driver.get_cookies()
  print("cookiesAfter:")
  print(cookiesAfter)
  # cookie 存放到了list,其中是dict
  # 对比发现登录后的cookie比登录前多了4个dict。
  # 如下代码分别是 1、4 、7、 8 
  len1 = len(cookiesAfter)
  print("len:%d" %len1)
  cookie1 = cookiesAfter[0]
  cookie2 = cookiesAfter[3]
  cookie3 = cookiesAfter[-2]
  cookie4 = cookiesAfter[-1]
  print("cookie1:%s" %cookie1)
  print("cookie2:%s" %cookie2)
  print("cookie3:%s" %cookie3)
  print("cookie4:%s" %cookie4)
  driver.quit()
  # 将获取的这四个cookie作为参数,传递给,使用cookie登录的函数,如下
  cookieLogin(cookie1,cookie2,cookie3,cookie4)
def cookieLogin(cookie1,cookie2,cookie3,cookie4):
  print("+++++++++++++++++++++++++")
  print("cookieLogin")
  print("cookie2:%s" % cookie2)
  print("cookie4:%s" % cookie4)
  driver = webdriver.Chrome()
  driver.maximize_window()
  # 清除一下cookie
  driver.delete_all_cookies()
  time.sleep(3)
  driver.get(url)
  # 打开浏览器后添加访问地址后,添加cookie
  driver.add_cookie(cookie1)
  driver.add_cookie(cookie2)
  driver.add_cookie(cookie3)
  driver.add_cookie(cookie4)
  print("cookies")
  # 打印一下cookie,与上面正常登录的cookie对比一下
  print(driver.get_cookies())
  time.sleep(5)
  # 刷新页面,可以看到已经是登录状态了,至此完成的使用cookie 的登录。
  driver.refresh()
  time.sleep(5)
  driver.quit()
if name == "main":
  login()

Einführung in den Code

Wie im Bild gezeigt, können Sie die Cookies vor und nach dem Anmelden anzeigen. Kopieren Sie sie und vergleichen Sie sie

Wie im Bild gezeigt, können Sie Vergleichen Sie sie. Nach dem Anmelden gibt es vier weitere Cookies.

Es handelt sich um die Elemente 1, 4, 7 und 8g Liste, also nehmen Sie es heraus und geben Sie es als Parameter an die Cookie-Anmeldefunktion weiter.

Hinweis: Dieses Beispiel führt einen Anmeldevorgang ohne Bestätigungscode ein, die Idee ist jedoch dieselbe. Diese Demo dient lediglich dazu, die Idee der Verwendung von Cookies zum Anmelden vorzustellen. In bestimmten Projektanwendungen ist dies sehr unpraktisch.

2. Tatsächliche Anmeldung unter Umgehung des Bestätigungscodes

Als nächstes stellen wir die Anmeldung mit Bestätigungscode vor. Natürlich ist die Idee der Cookie-Verarbeitung grundsätzlich dieselbe wie oben vorgestellt

Hier wurden einige Dinge hinzugefügt:

a. Verwenden Sie den Bestätigungscode, um sich zum ersten Mal korrekt anzumelden und die Cookies vor und nach der Anmeldung zu speichern, zu vergleichen und zu analysieren die Cookies und filtern Sie nützliche Cookies

b. Schreiben Sie das Cookie in die Yaml-Datei, damit es bei der späteren Anmeldung mit dem Cookie direkt verwendet werden kann, ohne sich wie oben beschrieben jedes Mal normal anmelden zu müssen.

c. Wenn Sie Cookies zum Anmelden verwenden, lesen Sie einfach das entsprechende Cookie aus der Yaml-Datei. Hinweis: Einzelheiten zu Yaml-Dateivorgängen finden Sie unter: Python Yaml Learning, das eine detaillierte Einführung in die Lese- und Schreibvorgänge von Yaml bietet.

Hinweis: Hier wird eingeführt, dass Sie den Bestätigungscode manuell eingeben müssen, um sich korrekt anzumelden und dann das Cookie zu erhalten. In tatsächlichen Anwendungen können andere Methoden verwendet werden, um Cookies zu erhalten

wie zum Beispiel: 1. Das zuvor eingeführte Blog-Garten-Anmeldebeispiel: Python – Cookie-Bypass-Bestätigungscode-Anmeldung Verwenden Sie Fiddler, um Cookies anzuzeigen

2 . Verwenden Sie das Browsen. Verwenden Sie beispielsweise das unten gezeigte Chrome-Plugin, um Cookies zur Analyse zu exportieren.

Die Idee ist wie oben, der Code lautet wie folgt:

2.1. Melden Sie sich normal an, um gültige Cookies zu erhalten

# FileName : getLoginCookie.py
# Author  : Adil
# DateTime : 2018/3/20 21:43
# SoftWare : PyCharm
import yaml,time,os
from selenium import webdriver
url = 'https://system.address'
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window()
time.sleep(2)
driver.find_element_by_id("username").clear()
driver.find_element_by_id("username").send_keys("username")
driver.implicitly_wait(5)
driver.find_element_by_id("password").clear()
driver.find_element_by_id("password").send_keys("password")
print("请输入验证码:")
# 手动输入验证码
security_code = input()
time.sleep(1)
driver.find_element_by_id("security_code").send_keys(security_code)
time.sleep(1)
driver.find_element_by_id('sign_btn').click()
driver.implicitly_wait(5)
# 加一个休眠,这样得到的cookie 才是登录后的cookie,否则可能打印的还是登录前的cookie
time.sleep(5)
cookiesAfter = driver.get_cookies()
len1 = len(cookiesAfter)
# 已经知道需要第几个cookie,这里需要第3个cookie,所以选择cookie下标为2
cookie1 = cookiesAfter[2]
# 获取当前文件所在路径
fileNamePath = os.path.split(os.path.realpath(file))[0]
# 拼接config.yaml文件绝对路径
yamlPath = os.path.join(fileNamePath,'config.yaml')
# 以覆盖写入打开文件
fw = open(yamlPath,'w',encoding='utf-8')
# 构建数据
data = {"cookie1":cookie1}
# 装载写入yaml文件。
yaml.dump(data,fw)
driver.quit()

2.2. Cookies lesenKonfigurationsdatei , Cookies verwenden, um sich beim System anzumelden

# FileName : stlUseCookieLogin.py
# Author  : Adil
# DateTime : 2018/3/20 21:48
# SoftWare : PyCharm
from selenium import webdriver
import time,yaml,os
url = 'https://system.address'
driver = webdriver.Chrome()
driver.maximize_window()
driver.delete_all_cookies()
time.sleep(3)
driver.get(url)
fileNamePath = os.path.split(os.path.realpath(file))[0]
yamlPath = os.path.join(fileNamePath,'config.yaml')
# 读取yaml 文件
f = open(yamlPath,'r',encoding='utf-8')
cont = f.read()
conf = yaml.load(cont)
# 读取cookie值
cookie1 = conf.get("cookie1")
# 添加cookie
driver.add_cookie(cookie1)
print("cookies")
print(driver.get_cookies())
time.sleep(5)
# 这里重新获取地址,因为有些系统,未登录状态,链接会跳转,这里就是,登录状态后,才能正确打开指定网址,所以这里要再次指定网址。
driver.get(url)
# 刷新查看登录状态
driver.refresh()
time.sleep(5)
driver.quit()

Ich glaube, Sie haben die Methode gemeistert, nachdem Sie den Fall in diesem Artikel gelesen haben Bitte beachten Sie andere verwandte Artikel auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erklärung, wie Python Textdaten liest und in das DataFrame-Format konvertiert

Wie Python aufruft API Implementieren Sie eine intelligente Antwortfunktion

Das obige ist der detaillierte Inhalt vonSelenium + Cookie überspringt die Implementierungsschritte für die Anmeldung mit dem Bestätigungscode. Detaillierte Erklärung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn