Heim  >  Artikel  >  Backend-Entwicklung  >  Python Selenium Cookie umgeht den Bestätigungscode, um einen Anmeldebeispielcode zu erhalten_

Python Selenium Cookie umgeht den Bestätigungscode, um einen Anmeldebeispielcode zu erhalten_

不言
不言Original
2018-04-10 15:22:262970Durchsuche

In diesem Artikel wird hauptsächlich das Python-Selenium-Cookie unter Umgehung des Bestätigungscodes vorgestellt, um einen Anmeldebeispielcode zu erhalten. Jetzt können Freunde in Not darauf verweisen.

Ich habe zuvor die Verwendung von Cookies vorgestellt Umgehen Sie den Bestätigungscode, um die Anmeldemethode zu erreichen. Hier gibt es nichts Überflüssiges, wir werden eine Analyse und eine weitere Methode zur Implementierung der Anmeldung hinzufügen.

1. Einführung von 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()

1.2. Code-Einführung

Wie in der Abbildung gezeigt, können Sie die Cookies vor der Anmeldung und nach der Anmeldung anzeigen, kopieren und vergleichen

Wie im Bild gezeigt, ist der Vergleich in Ordnung. Nach dem Anmelden gibt es vier überschüssige Cookies.

Überprüfen Sie die Position der überschüssigen Cookies die 1, 4, 7 und 8g-Elemente der Liste, also Nehmen Sie es heraus und geben Sie es als Parameter an die Cookie-Anmeldefunktion weiter.

Hinweis: In diesem Beispiel wird der Anmeldevorgang ohne Bestätigungscode beschrieben, 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. Praktische Anmeldung unter Umgehung des Bestätigungscodes

Als nächstes stellen wir natürlich die Idee der Cookie-Verarbeitung vor Im Grunde dasselbe wie oben beschrieben.

Hier wurden einige Dinge hinzugefügt:

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

Schreiben Sie das Cookie in die Yaml-Datei, damit es beim späteren Anmelden direkt verwendet werden kann, ohne dass Sie sich normal anmelden müssen jedes Mal wie oben beschrieben.

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. Lesen Sie die Cookie-Konfigurationsdatei und verwenden Sie Cookies, 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()


Das obige ist der detaillierte Inhalt vonPython Selenium Cookie umgeht den Bestätigungscode, um einen Anmeldebeispielcode zu erhalten_. 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