• 验证码模拟登录TestHome


    前面我们做了一个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()

    嗯哼,这次的分享就到这里,有兴趣的朋友可以自己多多练习。
  • 相关阅读:
    Paypal开源nodejs框架研究(一)KrakenJs
    CoffeeScript 陷阱
    nodejs express route 的用法
    Moogoose实践之:Schema写全很重要,不然会把时间浪费在调错上!
    微软新一代输入法框架 TSF
    VC++在Win7和Win8系统下获得百度输入法的名字
    两款MongoDB的可视化管理工具
    网易开源游戏服务器框架-Pomelo实践(一)
    WinDbg之Page Heap实践
    MongoDB 备份与恢复的实践
  • 原文地址:https://www.cnblogs.com/rookie-c/p/5753401.html
Copyright © 2020-2023  润新知