前面我们做了一个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. caffe特征提取/C++数据格式转换

    Caffe生成的数据分为2种格式:Lmdb 和 Leveldb 它们都是键/值对(Key/Value Pair)嵌入式数据库管理系统编程库. 虽然lmdb的内存消耗是leveldb的1.1倍,但是lm ...

  2. VTK+MFC 系列教程 非常强大

    虽然QT才是王道!MFC的懂一些也是好的. 原文链接:http://blog.csdn.net/www_doling_net/article/details/8939115 之前介绍了基于VTK的单文 ...

  3. 关于编译PCL1.71

    最近在编译PCL1.71时总会出现错误, 编译的时候就出现无法生成pcl_io_debug.lib 由于无法生成pcl_io_debug.lib,. 借鉴PCL中国的经验: (1):把io\inclu ...

  4. Algorithms算法题<1.1>

    1.1.27 二项分布.估计用一下代码计算binomial(100,50,0.25)将会产生的递归调用次数: public static double binomial(int N,int k,dou ...

  5. sass揭秘之@mixin,%,@function(转载)

    因为文章内含有很多sass代码,如需自己动手查看编译结果,推荐使用sassmeister这款在线编译工具,方便你阅读学习. 在阅读本文章之前,请先确认你已经阅读了上篇文章sass揭秘之变量,不然会给你 ...

  6. matlab学习创建变量定义函数

    定义变量a,b,c,计算输出d >> a=-3;b=2;c=5;>> d=(a^2+b)/c;>> d=(a^2+b)/c d = 2.2000 系统默认变量  a ...

  7. mybatis传入参数类型parameterType详解

    前言 Mybatis的Mapper文件中的select.insert.update.delete元素中都有一个parameterType属性,用于对应的mapper接口方法接受的参数类型. ( res ...

  8. iOS runLoop 原理多线程 总结 NSTimer优化

    可以理解为字面意思:Run 表示运行,Loop 表示循环.结合在一起就是运行的循环的意思.哈哈,我更愿意翻译为『跑圈』.直观理解就像是不停的跑圈. RunLoop 实际上是一个对象,这个对象在循环中用 ...

  9. UOJ #86 mx的组合数 (数位DP+NTT+原根优化)

    题目传送门 matthew99神犇的题解讲得非常清楚明白,跪烂Orzzzzzzzzzzzzz 总结一下,本题有很多重要的突破口 1.Lucas定理 看到n,m特别大但模数特别小时,容易想到$lucas ...

  10. [Windows Server]新机子上装老系统·

    硬盘模式改了也得用U大师,然后再PE里装 1.U大师做启动盘 2.拷贝解压后的系统进去 3.用PE自带安装工具