js脚本-验证码识别

js脚本必备–图片验证码识别

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
如何解决,下来一起看看吧

1. 介绍

  • 想必做自动化脚本的都遇到过图片验证码识别的问题,今天发现一个比较牛的工具—百度智能云,它提供了一些免费的api可以来帮助识别各种文字、验证码等等等、功能下面介绍

2. 准备

  • 注册百度智能云
  • 在这里插入图片描述
  • 依次点击,进入文字识别页面,可以看到有很多功能
    -在这里插入图片描述
    然后去领取免费的资源
    在这里插入图片描述
    这里按需领取,你全勾选也ok, 这里我就选择通用文字识别
    在这里插入图片描述

领取完成后,点击应用列表,我们去创建一个应用

  • 点击创建应用
    -

ok, 这个就是你的应用了, 复制你的appid 和 api key,后面请求接口会用到,然后点击API在线调试
将刚才复制的搞到这里,懂得都懂

  • 可以选择语言,这里选node.js

  • 我们就以这样验证码为例
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bumOPjHx-1692706247268)(1.assets/image-20230822195121371.png)]
    在这里插入图片描述

  • 将图片的url放到这,点击调试, 可以看到结果
    -在这里插入图片描述
    发现多了一个空格,我们js处理一下

    str.replace(/\s/g, '');   # 将空格替换掉
    
  • 众所周知, 图片验证码使用url的时候会再请求一次,导致验证码变化

  • 所以这里我们将图片转为base64位编码来(后面有代码演示)

    • 放到这里

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9x8uvuzv-1692706247269)(1.assets/image-20230822195630102.png)]

    • 所以我们需要将验证码图片保存到本地(可使用html2canvas库来实现html2canvas可以将任意HTML元素转换为Canvas对象,然后可以将Canvas对象转换为图片。)

3. js使用

这里我就直接将验证码图片下载下来方便演示

  • base64方式
    • 这里我使用axios
const axios = require('axios');
const fs = require('fs');

const API_KEY = "NGcY7njMWblMEMGDGUGaNCWs"
const SECRET_KEY = "iw9wAAmBUPZk72GXAzvcA0rq1uyLp6LR"


// 获取access_token
function getAccessToken() {
    return new Promise(function (resolve, reject) {
        let url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + API_KEY + "&client_secret=" + SECRET_KEY
        axios.post(url).then(function (response) {
            data = response.data.access_token
            resolve(data);
        }).catch(function (error) {
            console.log(error);
        });
    })

}
async function main() {
    let url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" + await getAccessToken()
    let headers = {
        "headers": {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Accept': 'application/json'
        }
    }
    
    // 这里我就直接用本地图片了,方便演示
    let data = {
        'image': 'data:image/png;base64,' + await convertImageToBase64('./js_es6/js/result.png')
    }
    axios.post(url, data, headers).then(response => {
        console.log(response.data.words_result[0].words)
    }).catch(err => {
        console.log(err, "err")

    })

}

// 将图片转为转base64编码
function convertImageToBase64(filePath) {
    return new Promise(function (resolve, reject) {
        fs.readFile(filePath, function (error, data) {
            if (error) {
                reject(error);
            } else {
                const base64String = data.toString('base64');
                resolve(base64String);
            }
        });
    });
}
main()

// ok解决

总结

  • 这个接口是一个月1000次免费,平民玩家足以
  • 百度智能云功能强大,要想识别率高—>充钱使你强大
  • 喜欢三连
  • 43
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 45
    评论
自动抢购JS脚本是一种通过编程自动执行一系列操作的技术,通过精确定义的脚本来模拟人工操作,以实现自动抢购华为商城的商品。 首先,我们需要分析华为商城的网页结构和抢购流程。通过浏览器开发者工具,可以查看到网页元素的代码和交互逻辑。我们需要关注商品页面中的“立即抢购”按钮和购物车页面中的“提交订单”按钮。 接下来,我们可以使用JS脚本通过定时器来执行以下操作: 1. 打开华为商城的商品页面,并确保已登录账户。 2. 通过DOM操作获取“立即抢购”按钮的元素,并模拟点击事件。 3. 等待一段时间,以确保商品已添加到购物车。 4. 跳转到购物车页面,并通过DOM操作获取“提交订单”按钮的元素,并模拟点击事件。 5. 等待一段时间,以确保订单已提交。 需要注意的是,为了避免被识别为自动程序而被封禁,我们可以在脚本中加入一些随机的时间延迟、鼠标移动操作、人类行为模式等来模拟真实的用户操作。 然而,使用自动抢购JS脚本存在一定的风险。网站可能会采取一些反爬虫措施,如验证码、限制访问频率等,这可能导致自动抢购脚本的失效。此外,自动抢购可能违反网站的使用规则,可能会导致账户被封禁或商品被取消订单。 总的来说,自动抢购JS脚本可以帮助我们自动化抢购华为商城的商品,但需要谨慎使用,遵守网站规则和法律法规,避免造成不必要的麻烦。
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值