이번에는 인증코드를 건너뛰기 위해 셀레늄+쿠키를 사용하여 로그인하는 단계에 대해 자세히 설명합니다. 셀레늄+쿠키를 사용하여 인증코드를 건너뛰고 로그인하는 주의사항은 무엇인가요? , 살펴 보겠습니다.
쿠키를 통해 로그인하기 위해 인증번호를 우회하는 방법은 이전에 소개한 적이 있습니다. 여기에는 중복되는 것이 없습니다. 로그인을 구현하기 위한 분석 및 다른 방법을 추가하겠습니다.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()
2. 인증코드를 우회한 실제 로그인
다음으로 인증코드가 포함된 로그인에 대해 소개하겠습니다. 물론, 쿠키 처리에 대한 개념은 위에서 소개한 것과 기본적으로 같습니다A 여기에 몇 가지 사항이 추가되었습니다. a. 처음에는 인증 코드를 사용하여 올바르게 로그인하고 로그인 전후에 쿠키를 저장하고 쿠키를 비교 및 분석하고 유용한 쿠키를 필터링합니다. b. 이후에 쿠키를 사용하여 위의 소개가 필요 없이 바로 로그인할 수 있도록 하려면 매번 정상적으로 로그인해야 합니다. c. 쿠키를 사용하여 로그인할 때는 yaml 파일에서 해당 쿠키를 읽으면 됩니다. 참고: Yaml 파일 작업에 대한 자세한 내용은Python Yaml 학습을 참조하세요. Yaml 학습에서는 yaml의 읽기 및 쓰기 작업에 대해 자세히 소개합니다.
참고: 여기서 소개하는 방법은 인증 코드를 수동으로 입력하여 올바르게 로그인한 다음 쿠키를 얻는 것입니다. 실제 응용 프로그램에서는 다른 방법을 사용하여 쿠키를 얻을 수 있습니다예: 1. 이전에 소개된 블로그 가든 로그인 예: Python - 쿠키가 인증 코드 로그인을 우회합니다. Fiddler를 사용하여 쿠키를 봅니다 2. 브라우저를 사용하여 쿠키를 봅니다. 예를 들어, 크롬 플러그인을 사용하여 아래와 같이 분석을 위해 쿠키를 내보냅니다.# 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()
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()
파이썬이 텍스트 데이터를 읽고 이를 DataFrame 형식으로 변환하는 방법에 대한 자세한 설명
파이썬이 API를 호출하여 스마트 답장 기능을 구현하는 방법
위 내용은 셀레늄+쿠키 건너뛰기 인증코드 로그인 구현 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!