前面我们做了一个xsrf的知乎的模拟登录,那么今天将会给大家分享一下小弟写的一段带验证码的登录脚本。

 
今天我们要做的是testerhome的模拟登录,在做这个模拟登录的时候,我发现需要验证码才能登录。那么这里的自动登录,我们首先要面对的问题就是验证码。
我在页面元素中定位到了验证码图片的服务器地址,想通过去服务器地址取验证码图片,然后手动输入验证码去实现模拟的自动登录,然后,首先要解决的就是验证码的获取,展示,以及关闭和。其实输入这里不是什么大问题。这里这段代码,我搞了两天才搞出来。下面分享给大家。
importrequests
fromPILimportImage
importos
importtime
ssesion = requests.session()
headers = {
'Connection':'keep-alive',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
'Accept-Encoding':'gzip, deflate, sdch',
'server':'nginx',
}
login_data = {'username':'',# 替换为账号
'password':'',# 替换为密码
'Referer':'https://testerhome.com/',
}
captchaurl ='https://testerhome.com/rucaptcha/'
url ='https://testerhome.com/account/sign_in'
r = ssesion.get(captchaurl,headers=headers) defoncaptcha(): f =open('C:\\Users\\admin\\Desktop\\captcha.jpg','wb')
f.write(r.content)
cap = Image.open('C:\\Users\\admin\\Desktop\\captcha.jpg')
captch = Image._show(cap)
time.sleep(5)
captcha ='taskkill/f /IM dllhost.exe'
os.system(captcha)
Captcha =input('captcha:')
returncaptch,Captcha
oncaptcha()
这里这段代码笔者做的时候难点就是验证码的图片的展示,以及定时的关闭。因为没有接触过这块儿,所以也做了两天的时间。
在这里我只给大家解读一下oncaptcha函数里的代码。上面的代码实在是讲过太多次了,就不做解读了。
第一部分,我们将获得到的返回内容,以二进制的形式写入到指定的地址和文件中
然后,通过Pillow(Python3.5)模块的Image.show()方法,打开win的图片查看器,展示验证码图片
接着,我使用time模块的time.sleep()方法设置了一个休眠期,休眠时间为5s
然后我通过os模块的os.system()方法去杀掉了win里面的图片查看器的进程,关闭了验证码
最后使用input()方法,输入验证码
为什么我这里使用os.system呢?因为我没有找到其他的关闭验证码图片的方法!然后...我想了想,这个图片验证码是调了win的服务进行展示,所以就利用os.system去杀掉它的进程进行关闭。
好了,最难得部分已经解决了,那么我们来看看完整的模拟登录的代码:
importrequests
fromPILimportImage
importos
importtime
ssesion = requests.session()
headers = {
'Connection':'keep-alive',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
'Accept-Encoding':'gzip, deflate, sdch',
'server':'nginx',
}
login_data = {'username':'',# 替换为账号
'password':'',# 替换为密码
'Referer':'https://testerhome.com/',
}
captchaurl ='https://testerhome.com/rucaptcha/'
url ='https://testerhome.com/account/sign_in'
r = ssesion.get(captchaurl,headers=headers) defoncaptcha(): f =open('C:\\Users\\admin\\Desktop\\captcha.jpg','wb')
f.write(r.content)
cap = Image.open('C:\\Users\\admin\\Desktop\\captcha.jpg')
captch = Image._show(cap)
time.sleep(5)
captcha ='taskkill/f /IM dllhost.exe'
os.system(captcha)
returncaptch
deflogin():
oncaptcha()
Captcha =input('captcha:')
login_data['captcha']=Captcha
response = ssesion.get(url,headers= headers,data= login_data,)
print(response)
if__name__ =='__main__':
login()
嗯哼,这次的分享就到这里,有兴趣的朋友可以自己多多练习。

验证码模拟登录TestHome的更多相关文章

  1. C#使用tesseract3.02识别验证码模拟登录

    一.前言 使用tesseract3.02识别有验证码的网站 安装tesseract3.02 在VS nuget 搜索Tesseract即可. 二.项目结构图 三.项目主要代码 using System ...

  2. Python3.7爬虫:实时api(百度ai)检测验证码模拟登录(Selenium)页面

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_134 今天有同学提出了一个需求,老板让自动登录这个页面:https://www.dianxiaomi.com/index.htm, ...

  3. C#使用tesseract3.02识别验证码模拟登录(转)

    转自http://www.cnblogs.com/JinJi-Jary/p/5625414.html

  4. curl 模拟登录微信公众平台带验证码

    这段时间一直写个项目, 从切图到前端到后台都要搞定,真tm累. 今天下午手残,不停用错误的密码去模拟登录微信公众平台,结果后来出现验证码,瞬间悲剧(菜鸟从来没搞过带验证码的). 研究了一下,发现其实很 ...

  5. PHP使用CURL实现对带有验证码的网站进行模拟登录的方法

    网上的很多模拟登录程序,大都是通过服务程序apache之类的运行,获取到验证码之后显示在网页上,然后填上再POST出去,这样虽然看起来很友 好,但是既然模拟登录,登录后所干的事情就不一定是短时间完成的 ...

  6. php_curl模拟登录有验证码实例

    <?php/** * @author 追逐__something * @version $id */define('SCRIPT_ROOT',dirname(__FILE__).'/');$ac ...

  7. C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站

    原文:C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站 我们经常会碰到需要程序模拟登录一个网站,那如果网站需要填写验证码的要怎样模拟登录呢?这篇文章 ...

  8. Java豆瓣电影爬虫——模拟登录的前世今生与验证码的爱恨情仇

    前言 并不是所有的网站都能够敞开心扉让你看个透彻,它们总要给你出些难题让你觉得有些东西是来之不易的,往往,这也更加激发你的激情和斗志! 从<为了媳妇的一张号,我与百度医生杠上了>里就有网友 ...

  9. php通过curl扩展进行模拟登录(含验证码)

    以下为本人工作中遇到的需要做的事情,之前也没怎么用过curl,查了好多资料,才稍微弄明白一点:本文所有内容只是自己平日工作的记录,仅供大家参考:<?php/*** 模拟登录*/header(&q ...

随机推荐

  1. 国外60个专业3D模型网站

    原始链接:http://blog.sina.com.cn/s/blog_4ba3c7950100jxkh.html Today, 3D models are used in a wide variet ...

  2. 易观OLAP算法大赛结果揭晓,开源组黑马放大招!

    100+天激烈赛程,40+国内顶级技术豪门对决,历经研发内部测试.正式环境测试和易观数据正式环境跑benchmark三大阶段.10月28日,易观OLAP算法大赛优胜名单出炉! 40+技术门派比武 易观 ...

  3. tsar采集数据原理

    系统模块 cpu 字段含义 user: 表示CPU执行用户进程的时间,通常期望用户空间CPU越高越好. sys: 表示CPU在内核运行时间,系统CPU占用率高,表明系统某部分存在瓶颈.通常值越低越好. ...

  4. HTTP 请求报文和响应报文分析和解刨!!

    http请求和响应报文分析 一>http请求报文主要包括三个部分:1.请求行:2.请求头:3;请求体: 1,请求行一般包括三个部分:请求方式:请求url : http协议版本. 请求方法:大部分 ...

  5. http协议的状态码(200,404,503)

    http协议的状态码 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101( ...

  6. vue项目使用简略总结

    1.利用iView Cli搭建项目结构2.搭建完毕之后将proxy.js和'Server.js'放置到node_modules\webpack-dev-server\lib目录下,以实现跨域访问公司平 ...

  7. 手机QQ架构的浅谈

    手机QQ的原本的产品定位定位于移动社交,并将娱乐与生活服务相结合,整体的架构模块QQ主要分为登录注册,消息,聊天,联系人,动态,侧边栏,设置等几大模块.其中消息模块和聊天模块是核心模块.好友动态及联系 ...

  8. MSMQ如何设置事务特性

  9. C# 知识点集合

    1.一个Visual studio软件进程只能打开一个程序集,但是一个程序集可以加载多个项目,通过程序集的添加功能可以实现. 2.F11单步调试,F10跨程序调试(一般用不到) 3.VS如何快速的切换 ...

  10. Hadoop集群(第12期)_HBase简介及安装

    HBase简介 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问,是Google的BigTable的开源实现.HBase的目标是存储并处理大型的数据,更具体地说仅 ...