python 自动登录 验证码,python验证码登录代码
使用requests加上打码平台云打码,实现登陆有图片验证的网站,是图片验证码。
豆瓣的登录验证方式被改了,是点击验证和图片滑动验证相结合,所以被试无法使用豆瓣。
图片不能是js写的,一定要有图片的网址,不然没办法获取验证码图片(我还在学基础,不知道怎么获取JS写的图片)
然后我想到了一个笨办法,发现虽然在网页中无法获取js写的图片的网址,但是把鼠标放在src上就可以看到图片的网址,所以直接用网址。自己测试也可以,只是针对一个网站,其他的就不知道了。
#云编码平台实现验证码登录流程:
# 1.用验证码抓取页面数据。
# 2.解析页面数据中的验证码,图片下载到本地。
# 3.将验证码图片提交到云编码平台进行识别,返回验证码图片上的数据值。
#云编码平台:
# 1.在官网注册(普通用户和开发者用户都必须注册)
#普通用户用它来识别验证码是要扣费的。
#由开发人员用户用来获取界面
# 2.登录开发人员帐户:
# 1.下载示例代码-开发人员文档-调用示例和下载最新的DLL-pythonHTTp示例
# 2.创建软件:-我的软件-添加软件
# 3.对示例代码的源代码进行更改。
如果云编码平台提供的样本代码用以下信息修改就好了:
Getimg (codeimg): # username(普通用户)username= * * * * * * *
#密码(普通用户)
密码=*******
#软件ID,由开发者分成必要的参数。登录开发者后台【我的软件】获取!
appid=6431
#软件密钥,开发者将其划分为必要的参数。登录开发者后台【我的软件】获取!
appkey= 3c 8 AC 0 f 181871 BD 22674 a 631 e 74d 41 c 8
#图片文件
Filename=codeImg #这里是一个变量,它存储您获得的图像验证的本地路径。
#验证码类型,#举例:1004代表4位数字,不同类型收取不同费用。请准确填写,否则会影响识别率。在此查询所有类型的http://www.yundama.com/price.html验证码列表。
代码类型=3000
#超时时间,秒
超时=20
#检查
If (username==username): #判断你的参数是否设置好了。
打印(测试前请设置相关参数)
否则:
#初始化
Yundama=YDMHttp(用户名,密码,appid,appkey) #实例化YDMHttp类参数如上定义。
#登录云进行编码
uid=yundama . log in();
打印( uid: %s % uid )
#查询余额
balance=yundama . balance();
打印(“余额:% s“%余额”)
#开始识别、图像路径、验证码类型ID、超时(秒)、识别结果
cid,result=yundama.decode(文件名,代码类型,超时);
print(cid: %s,结果:%s % (cid,结果))
Return #返回识别后图像的验证码值(不是100%成功,图像中噪声太大,或者其他因素可能导致识别不成功)自己写的代码name=input(请输入用户名:)
Password=input(请输入密码:)
#访问要登录的网站,获取验证码图片
Img_url=登录页面的url
标题={
用户代理: Mozilla/5.0(Windows NT 10.0)apple WebKit/537.36(KHTML,如Gecko)
chrome/65 . 0 . 3325 . 181 Safari/537.36
}
page _ text=requests . get(URL=img _ URL,headers=headers)。text #用验证码发起对登录页面的请求,并获取返回的数据。
# tree=etree。HTML(page_text) #生成etree对象
code _ URL= 3358 * * * * */qkonline-PC-provider/captcha-image #使用xpath获取图像地址。本来是xpath图片的URL,但是我这个URL是js写的,我做不到。
# print(codeimg_url)用了我自己的方法。我把鼠标放在src属性上,然后自己记下了url。内网地址用* * * *代替code _ img=requests . get(URL=code img _ URL,headers=headers)。Content #请求图片并获得二进制数据。
带开(。/img.png , wb )作为fp:
fp.write(code_img)
codeText=getImg(./img.png) #将验证码图片提交到云打码平台进行识别,并取得返回的值
# 进行登陆
post _ URL= http://* * * * * * * */qk online-PC-provider/预登录? gotoURL=http://* * * * * * * client=http://* * * * * * * system tag=eSale
数据={
gotoURL: http://es.qk365.com ,
客户端:http://es.qk365.com ,
systemTag: eSale ,
姓名:姓名,#这个是自己输入的用户名
密码:密码,请按井号键这个是自己输入的密码
令牌:代码文本#这个是获取到的图片验证码的值,也就是上面示例代码的返回值,建议给上面写成一个函数}
# 文件写入
log in _ text=请求。post(URL=post _ URL,data=data,headers=headers).文本
带开(。/login.html , w ,编码=utf-8 )作为fp:
fp.write登录_文本)转载于:https://www。cnblogs。com/Wei-Yu/p/10307400。超文本标记语言
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。