之前接触的的验证码都是图形验证码,可以借助图片识别来实现,不过识别率不太高
后又研究绕过验证码实现登录。
最近有遇到短信验证码的问题,网上看了有各种处理方法。
1、cookie 登录
自己先尝试了,使用cookie 登录的方法,
具体详见代码
1、 获取cookie
# FileName : VerifyCodeLogin.py # Author : Adil # DateTime : 2018/4/9 13:09 # SoftWare : PyCharm from selenium import webdriver import time,os,yaml url = \'https://www.baidu.com/\' driver = webdriver.Chrome() driver.get(url) driver.implicitly_wait(5) driver.maximize_window() # 打开登录窗口 driver.find_element_by_xpath(\'//*[@id="u1"]/a[7]\').click() # 选择用户名密码 driver.find_element_by_xpath(\'//*[@id="TANGRAM__PSP_10__footerULoginBtn"]\').click() # 选择短信验证码登录 driver.find_element_by_xpath(\'//*[@id="TANGRAM__PSP_10__smsSwitchWrapper"]\').click() cookiesList = driver.get_cookies() print(cookiesList) # 输入手机号 driver.find_element_by_id(\'TANGRAM__PSP_10__smsPhone\').clear() driver.find_element_by_id(\'TANGRAM__PSP_10__smsPhone\').send_keys("手机号码") # 发送验证码 driver.find_element_by_id(\'TANGRAM__PSP_10__smsTimer\').click() # 输入验证码 print("请输入验证码:") verifyCode = input() driver.find_element_by_id(\'TANGRAM__PSP_10__smsVerifyCode\').clear() driver.find_element_by_id(\'TANGRAM__PSP_10__smsVerifyCode\').send_keys(verifyCode) driver.find_element_by_id(\'TANGRAM__PSP_10__smsSubmit\').click() time.sleep(5) # 获取登录后的cookies loginCookies = driver.get_cookies() print(loginCookies) # 存储cookie # cookie1 = loginCookies[5] # cookie2 = loginCookies[6] # cookie3 = loginCookies[8] cookies = cookiesList # 存储到本地yaml 文件 # 当前文件路径 yamldir = os.path.split(os.path.realpath(__file__))[0] yamlFileName = os.path.join(yamldir,\'cookies.yaml\') fw = open(yamlFileName,\'w\',encoding=\'utf-8\') # 数据组装 data = {"cookies":loginCookies} # 数据装载 yaml.dump(data,fw) driver.quit()
2、使用cookie 登录
# FileName : CookieLogin.py # Author : Adil # DateTime : 2018/4/9 13:35 # SoftWare : PyCharm from selenium import webdriver import time,os,yaml url = \'https://www.baidu.com/\' driver = webdriver.Chrome() driver.get(url) driver.implicitly_wait(5) driver.maximize_window() driver.delete_all_cookies() print(driver.get_cookies()) fileDir = os.path.split(os.path.realpath(__file__))[0] yamlFileName = os.path.join(fileDir,\'cookies.yaml\') # 读取yaml 文件 f = open(yamlFileName,\'r\',encoding=\'utf-8\') cont = f.read() cookies = yaml.load(cont) cookiesList = cookies.get(\'cookies\') print(cookiesList) for cookie in cookiesList: print(cookie) driver.add_cookie(cookie) print(driver.get_cookies()) time.sleep(5) driver.get(url) driver.refresh() time.sleep(15) driver.quit()
2、使用万能验证码
让研发提供一个万能验证码
3、验证码存到数据库中,从数据库中读取验证码
4、做一个短信广播实时监听短信验证码
这里需要做一个短信广播小程序
参考地址:https://www.cnblogs.com/itstu/p/6873221.html
http://tieba.baidu.com/p/5153637250?red_tag=z1616417748