WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 生活趣事
    • 生活日记
    • 防骗指南
  • 编程教学
    • API日记
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
    • 严选源码
  • 专题
  • 基友
  • 隐私
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君
首页 编程教学 Python基础结构 使用python模拟网站登录和识别验证码

使用python模拟网站登录和识别验证码

夏柔 7月 8, 2020

我们有几个产品访问量比较大,所用的短信和voip服务消耗非常快,为了不影响业务,老大要求运维每天都要检查供应商的剩余并登记,账号有几个个,查起来非常烦。听说真正的geek重复两遍以上的操作都会写脚本完成,我这个小菜鸟也不自量力一下,写个脚本模拟账号登录和查额,验证码识别等,此博客做个备忘,人生苦短,当然用python啦!

比较难搞定的是验证码识别,用的是pytesseract,默认没有训练对验证码识别不高,但好在验证码比较简单,写个循环一直拿验证码,直到识别出来:

#!/usr/bin/env python 
# -*- coding: UTF-8 -*-

import pytesseract
from PIL import Image,ImageFile,ImageEnhance
ImageFile.LOAD_TRUNCATED_IMAGES = True
'''
Dependencies List :
   1: yum install tesseract tesseract-devel -y
   2: yum install libjpeg libjpeg-devel -y
   3: pip install requests
   4: pip install pytesseract
   5: pip install pillow
   6: pip install tesseract-ocr
 '''
 
def get_captcha(self):

    api_captcha = 'http://sms.wpon.cn/main/GetCode.asp'
    get_headers = {

            'Host' : 'sms.wpon.cn',
            'Cache-Control':'max-age=0',
            'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Upgrade-Insecure-Requests' : '1',
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
            'Referer': 'http://sms.wpon.cn/index.asp',
            'Accept-Encoding' : 'gzip, deflate,sdch',
            'Accept-Language ' : 'zh-CN,zh;q=0.8',
            'Connection': 'close',

    }

    while True:
        r = requests.get(api_captcha,timeout=5,headers=get_headers)
        with open('captcha.jpg','wb') as f:
            for chunk in r.iter_content(1024):
                f.write(chunk)

        img = Image.open('captcha.jpg')
        text = pytesseract.image_to_string(img)
        text = text.strip()
        #确保识别到的是4位数字
        if len(text) == 4:
            try:
                int(text)
            except:
                pass
            else:
                break

    return text,r.cookies
    

识别到验证码会返回识别结果和cookie,用这个cookie和验证码一起登录才行,否则就会报验证码不符。登录是使用requests库,好处是不用手动处理cookie,非常简单:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__='will@wpon.cn'
import requests
''' pip install requests'''

def login(self):

    start = requests.session()
    login = start.post(url_login,data=postdata,headers=post_headers,cookies=post_cookies,params=url_params)
    
    while True :
        start = requests.session()
        login = start.post(api_login,data=postdata,params=url_params,headers=post_headers,cookies=get_data[1])
        #判断登录是否拿到登录后的cookies,确保登录成功
        if len(start.cookies) == 7:
            return start.cookies
            break

    bal = start.get(api_balance)
.....

总的来说,还是非常简单的,完整代码就不贴了

#cooike#geek#requests#viop#验证码
1
J2dcg1.png
猜你喜欢
  • Nginx添加跨域限制规则
  • 使用测速脚本对国内Linux服务器进行测速
  • 域名爆破之自动化信息收集脚本
  • 利用免费接口实现国家开放大学刷网课脚本
  • RiProV2定制导航条
  • 判断是否在微信浏览器打开
  • 微信内自动播放音频非百度方案
  • 利用veImageX加速您的网站,想不快都难!
  • SWAPIDC减少注册信息及防刷注册量教学
  • Python实现定时发送每日早报及生活指数
15 5月, 2020
清新简约520甜蜜蜜告白日促销宣传海报
夏柔
站长
夏山如碧 - 怀柔天下
1688
文章
25
评论
58145K
获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门33
WordPress技术教程267
前沿技术情报所22
城市创新——新消费11
最近有哪些不可错过的热文23
程序员的养生之道0
节
春
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2025 WordPress极简博客. Designed by 夏柔. 辽公网安备21010502000474号 辽ICP备19017037号-2