Maison  >  Article  >  développement back-end  >  Selenium+cookie ignore les étapes de mise en œuvre de la connexion au code de vérification, explication détaillée

Selenium+cookie ignore les étapes de mise en œuvre de la connexion au code de vérification, explication détaillée

php中世界最好的语言
php中世界最好的语言original
2018-04-12 09:53:185768parcourir

Cette fois, je vous apporte sélénium+cookie pour ignorer les étapes de mise en œuvre du code de vérification Quelles sont les précautions pour que sélénium+cookie ignore le code de vérification pour se connecter ? Voici quelques exemples de cas pratiques.

J'ai précédemment présenté la méthode permettant de contourner le code de vérification pour vous connecter via les cookies. Il n'y a rien de redondant ici, nous ajouterons une analyse et une autre méthode pour implémenter la connexion.

1. Introduction aux idées

1.1 Regardez le code directement, avec des commentaires détaillés

# 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. 🎜>

Comme le montre l'image, vous pouvez visualiser les cookies avant et après vous être connecté. Copiez-les et comparez-les

Comme le montre l'image, vous pouvez comparez-les. Après vous être connecté, il y a quatre autres cookies

Affichez l'emplacement du cookie en excès. Ce sont les éléments 1, 4, 7 et 8g. liste, alors retirez-le et donnez-le comme paramètre à la fonction de connexion aux cookies.

Remarque : Cet

exemple introduit une opération de connexion sans code de vérification, mais l'idée est la même. Cette démo a simplement pour but de présenter l'idée d'utiliser des cookies pour se connecter. Dans des applications de projets spécifiques, cela est très gênant.

2. Connexion réelle contournant le code de vérification

Ensuite, nous présenterons la connexion avec le code de vérification. Bien sûr, l'idée du traitement des cookies est fondamentalement la même. comme celui introduit ci-dessus

Quelques éléments ont été ajoutés ici :

a. Utilisez le code de vérification pour vous connecter correctement pour la première fois et enregistrez les cookies avant et après la connexion, comparez et analysez. les cookies et filtrer les cookies utiles

b. Écrivez le cookie dans le fichier yaml afin qu'il puisse être utilisé directement lors de la connexion ultérieure en utilisant le cookie, sans avoir à vous connecter normalement à chaque fois comme décrit ci-dessus.

c. Lorsque vous utilisez des cookies pour vous connecter, il suffit de lire le cookie correspondant dans le fichier yaml. Remarque : Pour plus de détails sur les opérations sur les fichiers Yaml, voir :

Python Yaml Learning, qui fournit une introduction détaillée aux opérations de lecture et d'écriture de yaml.

Remarque : ce qui est introduit ici est de saisir manuellement le code de vérification pour vous connecter correctement, puis d'obtenir le cookie. Dans les applications réelles, d'autres méthodes peuvent être utilisées pour obtenir des cookies

telles que : 1. L'exemple de connexion au jardin de blogs introduit précédemment : Python - Connexion par code de vérification de contournement des cookies Utilisez fiddler pour afficher les cookies

2 . Utiliser la navigation Par exemple, utilisez le plug-in Chrome comme indiqué ci-dessous pour exporter les cookies à des fins d'analyse.

L'idée est la même que ci-dessus, le code est le suivant :

2.1 Connectez-vous normalement pour obtenir des cookies valides

2.2. Lire les cookies
# 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()
Fichier de configuration

, utilisez des cookies pour vous connecter au système

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. , veuillez prêter attention aux autres articles connexes sur le site Web PHP chinois !
# 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()

Lecture recommandée :

Explication détaillée de la façon dont python lit les données texte et les convertit au format DataFrame


Comment python appelle API Implémenter la fonction de réponse intelligente

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn