from selenium import webdriver from chaojiying import Chaojiying_Client import time from lxml import etree from urllib.request import urlretrieve import requests # 1、把验证码图片下载下来 # 2、交给打码平台进行打码 # 在请求的时候自动保存cookie seession = requests.Session() def get_img(url): """ 下载验证码图片 :return: """ # 打开浏览器 driver = webdriver.Chrome() # 自动输入网址 time.sleep(5) # 打开指定的url地址 driver.get(url) # selenium 智能等待方式:显性等待 隐性等待 30 time.sleep(2) # 获取网站内的html源码 res = driver.page_source # 进行数据转换 注意:res就是页面html源码 不是对象 所以不用再调用text方法 html = etree.HTML(res) # xpath匹配验证码图片 xpath返回的是一个列表 img_code = html.xpath('//img[@id="verifyimg"]/@src')[0] # print(img_code) # 下载验证码图片 第一个参数应该是一个字符串 urlretrieve(img_code,"code.jpg") def get_code(): """ 处理验证码 :return: """ chaojiying2 = Chaojiying_Client('ipython', 'qq6218346', '4004') # 用户中心>>软件ID 生成一个替换 96001 im = open("code.jpg", 'rb').read() # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要// code = chaojiying2.PostPic(im, 1902) return code["pic_str"] def login(url,new_url,headers,code): """ 登陆个人中心 :return: """ data = { "next":"", "kf5_return_to":"", "username":"18632229371", "passwd": "qq123456", "code": code } # 当我们请求url这个地址的时候 会生成一个cookie # 所以当我们在请求的时候要顺便把cookie保存下来 seession.post(url=url,data=data,headers=headers) # 带着cookie去请求个人中心 response = seession.get(url=new_url,headers=headers) res = response.text return res if __name__ == '__main__': url = "https://www.kuaidaili.com/login/" new_url = "https://www.kuaidaili.com/usercenter/" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" } get_img(url) time.sleep(5) # code 就是我们解析出来的验证码内容 code = get_code() time.sleep(3) html = login(url=url,new_url=new_url,headers=headers,code=code) with open("daili.html","w",encoding="utf-8") as f: f.write(html)
python识别验证码自动登录网站,模拟登录
阅读:2426 输入:2020-06-19 11:52:16