记apifox-验证码解析
<p>通常在获取验证码时回需要一些动态的时间戳,记解析动态码的脚本</p><p>如接口/sys/randomImage/{{timestamp}}</p>
<p>主要2个动作,一个前置,一个后置</p>
<p><img src="https://img2024.cnblogs.com/blog/804660/202508/804660-20250808161207542-1115467039.png"></p>
<p> </p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_c1577891-f6b8-4f12-b7bb-b17aae1aa2fc" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_c1577891-f6b8-4f12-b7bb-b17aae1aa2fc" class="cnblogs_code_hide">
<pre>pm.globals.set('timestamp', <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Date().getTime())
console.log(</span>"设置全局时间戳变量"+pm.globals.get("timestamp"));</pre>
</div>
<span class="cnblogs_code_collapse">前置</span></div>
<div class="cnblogs_code"><img id="code_img_closed_1c4c509e-12ee-4899-a6f2-acb577eb0617" class="code_img_closed lazyload" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_1c4c509e-12ee-4899-a6f2-acb577eb0617" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_1c4c509e-12ee-4899-a6f2-acb577eb0617" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">通过.json()函数,获取到响应体中返回的json数据</span>
let res =<span style="color: rgba(0, 0, 0, 1)"> pm.response.json()
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">定义一个模板,这个模板存的是</span>
const template = `<html>
<img src="{{imgTemplate}}" />
</html>`;
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">构建img标签能识别的base64 url,注:如果接口返回的base64 url没有【data:image/png;base64,】则需要拼接进去,否则出不来图片。</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)">因接口返回的是一个数组,这里打印打一张图片</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)"> let img= "data:image/png;base64,"+ res.result;//res.result是图片地址</span>
let img = res.result.replace(/^data:image\/jpg;base64,/, ''<span style="color: rgba(0, 0, 0, 1)">);
const result </span>= await pm.executeAsync('/Users/tongzuqi/PycharmProjects/py/ocr/test.py', ,{ command: 'python3'<span style="color: rgba(0, 0, 0, 1)"> } )
pm.globals.set(</span>'captcha'<span style="color: rgba(0, 0, 0, 1)">, result)
console.log(</span>"设置全局时间戳变量:"+pm.globals.get("captcha"));</pre>
</div>
<span class="cnblogs_code_collapse">后置</span></div>
<div class="cnblogs_code"><img id="code_img_closed_cc36b7b5-c51f-4a42-a31f-9917efb9f63d" class="code_img_closed lazyload" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_cc36b7b5-c51f-4a42-a31f-9917efb9f63d" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_cc36b7b5-c51f-4a42-a31f-9917efb9f63d" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 0, 0, 1)">import sys
import base64
import ddddocr
</span>"""<span style="color: rgba(0, 0, 0, 1)">
接收一个参数 = base64
data:image/jpg;base64, 后的内容
返回一个识别后的
</span>"""<span style="color: rgba(0, 0, 0, 1)">
# show_ad置为False关闭广告
ocr </span>= ddddocr.DdddOcr(show_ad=<span style="color: rgba(0, 0, 0, 1)">False)
# 将base64转bytes
image </span>= base64.b64decode(sys.argv)
res </span>=<span style="color: rgba(0, 0, 0, 1)"> ocr.classification(image)
print(res)</span></pre>
</div>
<span class="cnblogs_code_collapse">test.py</span></div>
<p>控制台如下</p>
<p><img alt="image" width="752" height="728" loading="lazy" src="https://img2024.cnblogs.com/blog/804660/202508/804660-20250808161524826-932929678.png"></p>
<p> </p>
<div>
<div>
<div> </div>
</div>
</div><br><br>
来源:https://www.cnblogs.com/mytzq/p/19028687
頁:
[1]