>백엔드 개발 >파이썬 튜토리얼 >셀레늄+쿠키 건너뛰기 인증코드 로그인 구현 단계에 대한 자세한 설명

셀레늄+쿠키 건너뛰기 인증코드 로그인 구현 단계에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-04-12 09:53:185955검색

이번에는 인증코드를 건너뛰기 위해 셀레늄+쿠키를 사용하여 로그인하는 단계에 대해 자세히 설명합니다. 셀레늄+쿠키를 사용하여 인증코드를 건너뛰고 로그인하는 주의사항은 무엇인가요? , 살펴 보겠습니다.

쿠키를 통해 로그인하기 위해 인증번호를 우회하는 방법은 이전에 소개한 적이 있습니다. 여기에는 중복되는 것이 없습니다. 로그인을 구현하기 위한 분석 및 다른 방법을 추가하겠습니다.

1. 아이디어 소개

1.1. 자세한 메모와 설명과 함께 코드를 직접 살펴보세요

# 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 코드 소개

그림과 같이 로그인 전후에 쿠키를 볼 수 있습니다. , 복사하고 비교를 진행하세요

사진과 같이 로그인 후 쿠키가 4개 더 있습니다

. 목록의 1, 4, 7, 8g 요소를 제거하고 쿠키 로그인 기능으로 사용하십시오.

참고: 이

예제 소개는 인증 코드 없이 로그인하는 작업이지만 개념은 동일합니다. 이 데모는 단지 쿠키를 사용하여 로그인하는 아이디어를 소개하기 위한 것입니다. 특정 프로젝트 애플리케이션에서는 이는 매우 불편합니다.

2. 인증코드를 우회한 실제 로그인

다음으로 인증코드가 포함된 로그인에 대해 소개하겠습니다. 물론, 쿠키 처리에 대한 개념은 위에서 소개한 것과 기본적으로 같습니다

A 여기에 몇 가지 사항이 추가되었습니다.

 a. 처음에는 인증 코드를 사용하여 올바르게 로그인하고 로그인 전후에 쿠키를 저장하고 쿠키를 비교 및 ​​분석하고 유용한 쿠키를 필터링합니다.

b. 이후에 쿠키를 사용하여 위의 소개가 필요 없이 바로 로그인할 수 있도록 하려면 매번 정상적으로 로그인해야 합니다.

 c. 쿠키를 사용하여 로그인할 때는 yaml 파일에서 해당 쿠키를 읽으면 됩니다. 참고: Yaml 파일 작업에 대한 자세한 내용은

Python Yaml 학습을 참조하세요. Yaml 학습에서는 yaml의 읽기 및 쓰기 작업에 대해 자세히 소개합니다.

참고: 여기서 소개하는 방법은 인증 코드를 수동으로 입력하여 올바르게 로그인한 다음 쿠키를 얻는 것입니다. 실제 응용 프로그램에서는 다른 방법을 사용하여 쿠키를 얻을 수 있습니다

예: 1. 이전에 소개된 블로그 가든 로그인 예: Python - 쿠키가 인증 코드 로그인을 우회합니다. Fiddler를 사용하여 쿠키를 봅니다

  2. 브라우저를 사용하여 쿠키를 봅니다. 예를 들어, 크롬 플러그인을 사용하여 아래와 같이 분석을 위해 쿠키를 내보냅니다.

아이디어는 위와 같고 코드는 다음과 같습니다.

2.1. 유효한 쿠키를 얻으려면 정상적으로 로그인하세요.

# 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. 쿠키

config 파일을 읽고, ​​쿠키를 사용하여 로그인하세요. 시스템에

# 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()
이 기사의 사례를 읽은 후 방법을 마스터했다고 믿습니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 다른 관련 기사에 주목하세요!

추천 도서:

파이썬이 텍스트 데이터를 읽고 이를 DataFrame 형식으로 변환하는 방법에 대한 자세한 설명

파이썬이 API를 호출하여 스마트 답장 기능을 구현하는 방법

위 내용은 셀레늄+쿠키 건너뛰기 인증코드 로그인 구현 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.