Home > Article > Backend Development > Python Selenium Cookie bypasses verification code to achieve login sample code_
This article mainly introduces the Python Selenium Cookie to bypass the verification code to achieve login sample code. Now I share it with you. Friends in need can refer to it.
I have introduced the cookie to bypass the verification code to achieve login before. Methods. There is nothing redundant here, we will add analysis and another method to implement login.
1. Introduction to ideas
1.1. Look at the code directly, with detailed comments inside
# 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 introduction
As shown in the figure, you can view the cookies before login and after login, copy them and compare them
# #As shown in the picture, the comparison is OK. After logging in, there are four more cookies. Check the location of the excess cookies. They are elements 1, 4, 7, and 8 of the list, so put them Take it out and give it as a parameter to the cookie login function. Note: This example describes the login operation without verification code, but the idea is the same. This demo is just to introduce the idea of using cookies to log in. In specific project applications, this is very inconvenient.2. Practical practice of bypassing the verification code login
# 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. Read the cookie configuration file and use the cookie to log in to the system
# 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()
The above is the detailed content of Python Selenium Cookie bypasses verification code to achieve login sample code_. For more information, please follow other related articles on the PHP Chinese website!