Greasy Fork is available in English.

志愿北京验证码获取

无需关注公众号,自动获取志愿北京验证码

// ==UserScript==
// @name         志愿北京验证码获取
// @namespace    https://www.bv2008.cn
// @version      1.0.0
// @description  无需关注公众号,自动获取志愿北京验证码
// @author       OrdosX
// @match        https://www.bv2008.cn/app/user/login.php
// @icon         https://www.google.com/s2/favicons?domain=bv2008.cn
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function () {
  'use strict'

  // Your code here...
  window.addEventListener('load', function () {
    // 跨浏览器兼容requestAnimationFrame
    window.requestAnimationFrame || (window.requestAnimationFrame = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (e) { window.setTimeout(e, 1e3 / 60) })

    let remainMin = 0
    let remainSec = 0
    let lastRefresh = 0
    const refreshUI = function (time) {
      if (time - lastRefresh > 1000) {
        lastRefresh = time
        if (remainMin === 0 && remainSec === 0) {
          document.querySelector('#yzm_li a').text = '自动获取中……'
          getCode()
          return
        }
        if (remainMin !== 0 && remainSec === 0) {
          remainMin--
          remainSec = 60
        }
        remainSec--
        document.querySelector('#yzm_li a').text = `${remainMin}分${remainSec}秒后再次自动获取`
      }
      requestAnimationFrame(refreshUI)
    }
    const getCode = function () {
      document.querySelector('#yzm_li a').onclick = null
      GM_xmlhttpRequest({
        method: 'GET',
        url: 'https://www.bv2008.cn/app/api/view.php?m=get_login_yzm',
        headers: {
          'user-agent': 'MicroMessenger'
        },
        onload: function (res) {
          document.getElementById('uyzm').value = res.responseText.match(/>([0-9]{6})</)[1]
          remainMin = Number.parseInt(res.responseText.match(/剩余([0-9]{1})分[0-9]{1,2}秒有效/)[1])
          remainSec = Number.parseInt(res.responseText.match(/剩余[0-9]{1}分([0-9]{1,2})秒有效/)[1])
          requestAnimationFrame(refreshUI)
        }
      })
    }
    document.querySelector('#yzm_li a').onclick = getCode
    document.querySelector('#yzm_li a').innerText = '👍免关注获取验证码'
    document.querySelector('#yzm_li input').style = 'width:100px'
  })
})()