eoLinker-API_Shop_验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等...

以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务。

  1. 六位图片验证码生成:包括纯数字、小写字母、大写字母、大小写混合、数字+小写、数字+大写、数字+大小写等情况。
  2. 四位图片验证码生成:包括纯数字、小写字母、大写字母、大小写混合、数字+小写、数字+大写、数字+大小写等情况。
  3. 简单验证码识别:验证码类型 : 数字+字母, 纯英文, 纯数字,计算题
  4. 英数_验证码识别:纯数字,纯英文,数字+英文
  5. 中英数_验证码识别:英文、数字、中文或混合型

API Shop(apishop.net)提供多达50款的常用第三方API,可以从github上下载代码示例合集:https://github.com/apishop/All-APIs

以上接口均包含PHP、Python、C#和Java等四种语言的代码示例,以 识别中英数验证码 API为例:

(1)基于PHP的 识别中英数验证码 API服务请求的代码示例

<?php
$method = "POST";
$url = "https://api.apishop.net/common/checkcode/recognizeVerifyCodeComplicate";
$headers = NULL;
$params = array("convertJPG" => "", //是否转换成jpg格式(有少量png或gif图转成jpg格式后识别率明显提高,但并不是所有png或gif转成jpg后都会提高识别率。) 此字段为1时表示需要把图片转为jpg格式,其他值不做转换操作。"imgBASE64" => "", //图片文件的base64字符串。图片大小需要小于100KB。"codeType" => "", //验证码类型,最大长度为10.(10:任意长度数字(成功率有所降低),11~19:1~9位数字,20:任意长度英文(成功率有所降低),21~29:1~9位英文,30:任意长度英数混合(成功率有所降低),31~39:1~9位英数混合,40:任意长度汉字(成功率有所降低),41~49:1~9位汉字,50:任意长度中英数混合(成功率有所降低)),如“34”代表四位英数混合	
);$result = apishop_curl($method, $url, $headers, $params);
If ($result) {$body = json_decode($result["body"], TRUE);$status_code = $body["statusCode"];If ($status_code == "000000") {//状态码为000000, 说明请求成功echo "请求成功:" . $result["body"];} else {//状态码非000000, 说明请求失败echo "请求失败:" . $result["body"];}
} else {//返回内容异常,发送请求失败,以下可根据业务逻辑自行修改echo "发送请求失败";
}/*** 转发请求到目的主机* @param $method string 请求方法* @param $URL string 请求地址* @param null $headers 请求头* @param null $param 请求参数* @return array|bool*/
function apishop_curl(&$method, &$URL, &$headers = NULL, &$param = NULL)
{// 初始化请求$require = curl_init($URL);// 判断是否HTTPS$isHttps = substr($URL, 0, 8) == "https://" ? TRUE : FALSE;// 设置请求方式switch ($method) {case "GET":curl_setopt($require, CURLOPT_CUSTOMREQUEST, "GET");break;case "POST":curl_setopt($require, CURLOPT_CUSTOMREQUEST, "POST");break;default:return FALSE;}if ($param) {curl_setopt($require, CURLOPT_POSTFIELDS, $param);}if ($isHttps) {// 跳过证书检查curl_setopt($require, CURLOPT_SSL_VERIFYPEER, FALSE);// 检查证书中是否设置域名curl_setopt($require, CURLOPT_SSL_VERIFYHOST, 2);}if ($headers) {// 设置请求头curl_setopt($require, CURLOPT_HTTPHEADER, $headers);}// 返回结果不直接输出curl_setopt($require, CURLOPT_RETURNTRANSFER, TRUE);// 重定向curl_setopt($require, CURLOPT_FOLLOWLOCATION, TRUE);// 把返回头包含再输出中curl_setopt($require, CURLOPT_HEADER, TRUE);// 发送请求$response = curl_exec($require);// 获取头部长度$headerSize = curl_getinfo($require, CURLINFO_HEADER_SIZE);// 关闭请求curl_close($require);if ($response) {// 返回头部字符串$header = substr($response, 0, $headerSize);// 返回体$body = substr($response, $headerSize);// 过滤隐藏非法字符$bodyTemp = json_encode(array(0 => $body));$bodyTemp = str_replace("\ufeff", "", $bodyTemp);$bodyTemp = json_decode($bodyTemp, TRUE);$body = trim($bodyTemp[0]);// 将返回结果头部转成数组$respondHeaders = array();$header_rows = array_filter(explode(PHP_EOL, $header), "trim");foreach ($header_rows as $row) {$keylen = strpos($row, ":");if ($keylen) {$respondHeaders[] = array("key" => substr($row, 0, $keylen),"value" => trim(substr($row, $keylen + 1)));}}return array("headers" => $respondHeaders,"body" => $body);} else {return FALSE;}
}
复制代码

(2)基于Python的 识别中英数验证码 API服务请求的代码示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 测试环境: python2.7
# 安装requests依赖 => pip install requests/ easy_install requests# 导入requests依赖
import requests
import json
import sysreload(sys)
sys.setdefaultencoding('utf-8')def apishop_send_request(method, url, params=None, headers=None):'''转发请求到目的主机@param method str 请求方法@param url str 请求地址@param params dict 请求参数@param headers dict 请求头'''method = str.upper(method)if method == 'POST':return requests.post(url=url, data=params, headers=headers)elif method == 'GET':return requests.get(url=url, params=params, headers=headers)else:return Nonemethod = "POST"
url = "https://api.apishop.net/common/checkcode/recognizeVerifyCodeComplicate"
headers = None
params = {			"convertJPG":"", #是否转换成jpg格式(有少量png或gif图转成jpg格式后识别率明显提高,但并不是所有png或gif转成jpg后都会提高识别率。) 此字段为1时表示需要把图片转为jpg格式,其他值不做转换操作。"imgBASE64":"", #图片文件的base64字符串。图片大小需要小于100KB。"codeType":"", #验证码类型,最大长度为10.(10:任意长度数字(成功率有所降低),11~19:1~9位数字,20:任意长度英文(成功率有所降低),21~29:1~9位英文,30:任意长度英数混合(成功率有所降低),31~39:1~9位英数混合,40:任意长度汉字(成功率有所降低),41~49:1~9位汉字,50:任意长度中英数混合(成功率有所降低)),如“34”代表四位英数混合
}
result = apishop_send_request(method=method, url=url, params=params, headers=headers)
if result:body = result.textresponse = json.loads(body)status_code = response["statusCode"]if (status_code == '000000'):# 状态码为000000, 说明请求成功print('请求成功:%s' % (body,))else:# 状态码非000000, 说明请求失败print('请求失败: %s' % (body,))
else:# 返回内容异常,发送请求失败print('发送请求失败')
复制代码

(3)基于C#的 识别中英数验证码 API服务请求的代码示例

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Web.Script.Serialization;namespace apishop_sdk
{
class Program
{/*** 转发请求到目的主机* @param method string 请求方法* @param url string 请求地址* @param params Dictionary<string,string> 请求参数* @param headers Dictionary<string,string> 请求头* @return string**/static string apishop_send_request(string method, string url, Dictionary<string, string> param, Dictionary<string, string> headers){string result = string.Empty;try{string paramData = "";if (param != null && param.Count > 0){StringBuilder sbuilder = new StringBuilder();foreach (var item in param){if (sbuilder.Length > 0){sbuilder.Append("&");}sbuilder.Append(item.Key + "=" + item.Value);}paramData = sbuilder.ToString();}method = method.ToUpper();if (method == "GET"){url = string.Format("{0}?{1}", url, paramData);}HttpWebRequest wbRequest = (HttpWebRequest)WebRequest.Create(url);if (method == "GET"){wbRequest.Method = "GET";}else if (method == "POST"){wbRequest.Method = "POST";wbRequest.ContentType = "application/x-www-form-urlencoded";wbRequest.ContentLength = Encoding.UTF8.GetByteCount(paramData);using (Stream requestStream = wbRequest.GetRequestStream()){using (StreamWriter swrite = new StreamWriter(requestStream)){swrite.Write(paramData);}}}HttpWebResponse wbResponse = (HttpWebResponse)wbRequest.GetResponse();using (Stream responseStream = wbResponse.GetResponseStream()){using (StreamReader sread = new StreamReader(responseStream)){result = sread.ReadToEnd();}}}catch{return "";}return result;}class Response{public string statusCode;}static void Main(string[] args){string method = "POST";string url = "https://api.apishop.net/common/checkcode/recognizeVerifyCodeComplicate";Dictionary<string, string> param = new Dictionary<string, string>();			param.Add("convertJPG", ""); //是否转换成jpg格式(有少量png或gif图转成jpg格式后识别率明显提高,但并不是所有png或gif转成jpg后都会提高识别率。) 此字段为1时表示需要把图片转为jpg格式,其他值不做转换操作。param.Add("imgBASE64", ""); //图片文件的base64字符串。图片大小需要小于100KB。param.Add("codeType", ""); //验证码类型,最大长度为10.(10:任意长度数字(成功率有所降低),11~19:1~9位数字,20:任意长度英文(成功率有所降低),21~29:1~9位英文,30:任意长度英数混合(成功率有所降低),31~39:1~9位英数混合,40:任意长度汉字(成功率有所降低),41~49:1~9位汉字,50:任意长度中英数混合(成功率有所降低)),如“34”代表四位英数混合Dictionary<string, string> headers = null;string result = apishop_send_request(method, url, param, headers);if (result == ""){//返回内容异常,发送请求失败Console.WriteLine("发送请求失败");return;}Response res = new JavaScriptSerializer().Deserialize<Response>(result);if (res.statusCode == "000000"){//状态码为000000, 说明请求成功Console.WriteLine(string.Format("请求成功: {0}", result));}else{//状态码非000000, 说明请求失败Console.WriteLine(string.Format("请求失败: {0}", result));}Console.ReadLine();}}
}
复制代码

(4)基于Java的 识别中英数验证码 API服务请求的代码示例

package net.apishop.www.controller;import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;/**
* httpUrlConnection访问远程接口工具
*/
public class Api
{/*** 方法体说明:向远程接口发起请求,返回字节流类型结果* param url 接口地址* param requestMethod 请求方式* param params 传递参数     重点:参数值需要用Base64进行转码* return InputStream 返回结果*/public static InputStream httpRequestToStream(String url, String requestMethod, Map<String, String> params){InputStream is = null;try{String parameters = "";boolean hasParams = false;// 将参数集合拼接成特定格式,如name=zhangsan&age=24for (String key : params.keySet()){String value = URLEncoder.encode(params.get(key), "UTF-8");parameters += key + "=" + value + "&";hasParams = true;}if (hasParams){parameters = parameters.substring(0, parameters.length() - 1);}// 请求方式是否为getboolean isGet = "get".equalsIgnoreCase(requestMethod);// 请求方式是否为postboolean isPost = "post".equalsIgnoreCase(requestMethod);if (isGet){url += "?" + parameters;}URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();// 请求的参数类型(使用restlet框架时,为了兼容框架,必须设置Content-Type为“”空)conn.setRequestProperty("Content-Type", "application/octet-stream");//conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 设置连接超时时间conn.setConnectTimeout(50000);// 设置读取返回内容超时时间conn.setReadTimeout(50000);// 设置向HttpURLConnection对象中输出,因为post方式将请求参数放在http正文内,因此需要设置为ture,默认falseif (isPost){conn.setDoOutput(true);}// 设置从HttpURLConnection对象读入,默认为trueconn.setDoInput(true);// 设置是否使用缓存,post方式不能使用缓存if (isPost){conn.setUseCaches(false);}// 设置请求方式,默认为GETconn.setRequestMethod(requestMethod);// post方式需要将传递的参数输出到conn对象中if (isPost){DataOutputStream dos = new DataOutputStream(conn.getOutputStream());dos.writeBytes(parameters);dos.flush();dos.close();}// 从HttpURLConnection对象中读取响应的消息// 执行该语句时才正式发起请求is = conn.getInputStream();}catch(UnsupportedEncodingException e){e.printStackTrace();}catch(MalformedURLException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();}return is;}public static void main(String args[]){String url = "https://api.apishop.net/common/checkcode/recognizeVerifyCodeComplicate";String requestMethod = "POST";Map<String, String> params = new HashMap<String, String>();			params.put("convertJPG", ""); //是否转换成jpg格式(有少量png或gif图转成jpg格式后识别率明显提高,但并不是所有png或gif转成jpg后都会提高识别率。) 此字段为1时表示需要把图片转为jpg格式,其他值不做转换操作。params.put("imgBASE64", ""); //图片文件的base64字符串。图片大小需要小于100KB。params.put("codeType", ""); //验证码类型,最大长度为10.(10:任意长度数字(成功率有所降低),11~19:1~9位数字,20:任意长度英文(成功率有所降低),21~29:1~9位英文,30:任意长度英数混合(成功率有所降低),31~39:1~9位英数混合,40:任意长度汉字(成功率有所降低),41~49:1~9位汉字,50:任意长度中英数混合(成功率有所降低)),如“34”代表四位英数混合	String result = null;try{InputStream is = httpRequestToStream(url, requestMethod, params);byte[] b = new byte[is.available()];is.read(b);result = new String(b);}catch(IOException e){e.printStackTrace();}if (result != null){JSONObject jsonObject = JSONObject.parseObject(result);String status_code = jsonObject.getString("statusCode");if (status_code == "000000"){// 状态码为000000, 说明请求成功System.out.println("请求成功:" + jsonObject.getString("result"));}else{// 状态码非000000, 说明请求失败System.out.println("请求失败:" + jsonObject.getString("desc"));}}else{// 返回内容异常,发送请求失败,以下可根据业务逻辑自行修改System.out.println("发送请求失败");}}
}
复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网上书店 买方数据库

买方表 属性 字段名 类型 键值 是否空 用户ID UserId char(5) 主键 用户名称 UserName nvarchar(50) 用户密码 UserPwd nvarchar(50) 用户真实姓名 UserRealName nvarchar(50) 用户地址 UserAddress nvarchar(100) …

Web开发模式(MVC设计模式)

1.MVC&#xff1a;(Model-View-Controller)操作流程 显示层View:主要负责接收Servlet传递的内容&#xff0c;并调用JavaBean把内容显示给用户。 控制层Controller:负责所有的用户请求参数&#xff0c;判断请求参数是否合法&#xff0c;根据请求方式调用JavaBean进行处理&#x…

Arduino IDE 配置文件

最近学习Arduino。 Arduino开源硬件和Arduino IDE是一个很容易上手的系统。 目前arduino已经支持很多种板类型&#xff0c;甚至已经支持了部分arm芯片。比如arduino ng、arduino uno、arduino mini、pro mini等。但是大多数情况&#xff0c;都是使用的atmega8/at…

HALCON示例程序bottle.hdev、bottlet.hdev瓶体字符OCR的训练和检测

HALCON示例程序bottle.hdev、bottlet.hdev瓶体字符OCR的训练和检测 示例程序源码&#xff08;加注释&#xff09; 1、先介绍bottlet.hdev&#xff08;训练OCR识别文件&#xff09; *定义一个字符串变量FontName &#xff0c;内容是bottle FontName : ‘bottle’ *第一步分割…

【机器学习】神经网络BP理论与python实例系列

理论部分 《机器学习——人工神经网络之发展历史&#xff08;神经元数学模型、感知器算法&#xff09;》 《机器学习——人工神经网络之多层神经网络&#xff08;多层与三层&#xff09;》 《机器学习——人工神经网络之后向传播算法&#xff08;BP算法&#xff09;》 《机…

bzoj1597: [Usaco2008 Mar]土地购买

斜率优化dp。 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn 50000 10;struct Field {long long x,y; } t[maxn]; long long f[maxn],x[maxn],y[maxn]; int q[maxn],l,r; int n,cnt;bool cmp(F…

vue封装axios接口

一、安装axios axios安装命令&#xff1a;cnpm install axios 二、在文件中引用axios 一开始我是放在src下的main.js这个文件里面&#xff0c;后来发现mounted钩子读取接口方法为undefined&#xff0c;百度了才发现是vue生命周期的原因&#xff0c;最好的解决办法是把axios单独…

编写Arduino支持的C++类库

以下为摘抄的例子&#xff0c;已经亲自验证过&#xff0c;例子是正确的 我们在上一讲中实现了一个TN901红外温度传感器51程序到Arduino程序的转换&#xff0c;如果代码越来越多这样程序的可维护性会随之降低&#xff0c;也不适合团度开发。我们应该把常用的文件封装成C库&#…

函数,游标与存储过程的综合应用

--在TOY数据库中完成以下操作use toygo--1、编写一个存储过程&#xff0c;接收任意一个订单号&#xff0c;打印订单的表头数据。格式如下&#xff1a;--(其中订单编号由订单日期订单号的字符串组成)--订单编号:20010520000001 订货日期:2001-05-20 订货人:拉尔森create pro…

HALCON示例程序check_blister.hdev药品胶囊检测

HALCON check_blister.hdev药品胶囊检测 示例程序源码&#xff08;加注释&#xff09; 显示、读入图片、设置显示字体等&#xff0c;之前的帖子已经介绍过了 dev_close_window () dev_update_off () read_image (ImageOrig, ‘blister/blister_reference’) dev_open_window_f…

【机器学习实战】——常见函数积累

目录 第二章 k近邻算法 1、array.sum(axies 1) : 2、array.argsort(axies0/1) 3、array.tile(mat,(m,n)) 4、dict.get(key,value) 5、sorted函数 6、string.strip()函数 7、string.split() 8、scatter&#xff08;&#xff09;函数 9、min()&max() 10、enumera…

安装oracle 11g 客户端,检查过程中报物理内存不足的解决

今早接到同事电话&#xff0c;说安装oracle 11g客户端的时候&#xff0c;在检查先决条件的时候&#xff0c;报错&#xff0c;说内存不足&#xff0c;但是本机的内存是2G&#xff0c;肯定够用&#xff1a;如图&#xff1a; 找了一圈&#xff0c;原来Oracle执行先决条件检查是依赖…

智能时代 软件赋能——2017中国软件技术大会

由中国科学院软件研究所、中科软科技股份有限公司联合主办&#xff0c;北京中科凯亚科技有限公司协办的第15届中国软件技术大会将于2017年12月在北京 国家会议中心隆重举行。 毋庸置疑&#xff0c;我们正在迈入智能时代&#xff0c;伴随着物联网、云计算、大数据、人工智能等智…

Arduino 代码机制

新建一个Arduino程序。可是建完就郁闷了&#xff0c;因为只看到了setup和loop函数&#xff0c;却没有基本的c函数。 void setup() {// put your setup code here, to run once: }void loop() {// put your main code here, to run repeatedly: }于是好奇心就来了&#xff0c;当…

Codeforces Round #401 (Div. 2) D. Cloud of Hashtags

题目链接&#xff1a;D. Cloud of Hashtags 题意&#xff1a; 给你n个字符串&#xff0c;让你删后缀&#xff0c;使得这些字符串按字典序排列&#xff0c;要求是删除的后缀最少 题解&#xff1a; 由于n比较大&#xff0c;我们可以将全部的字符串存在一个数组里面&#xff0c;然…

HALCON示例程序check_blister_mixed.hedv药品胶囊缺陷检测

HALCON示例程序check_blister_mixed.hedv药品胶囊缺陷检测 示例程序源码&#xff08;加注释&#xff09; 读入图片与显示相关设置 dev_close_window () read_image (Image, ‘blister/blister_mixed_reference’) dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHan…

php类与对象

1.类与对象 对象&#xff1a;实际存在该类事物中每个实物的个体。$a new User(); 实例化后的$a 引用&#xff1a;php的别名&#xff0c;两个不同的变量名字指向相同的内容 封装: 把对象的属性和方法组织在一个类&#xff08;逻辑单元&#xff09;里 继承&#xff1a;以原有的类…

【深度学习系列】基础知识、模型学习

基础知识 原创 【深度学习】——训练过程 原创 【深度学习】——BN层&#xff08;batch normalization&#xff09; 原创 【深度学习】——激活函数&#xff08;sigmoid、tanh、relu、softmax&#xff09; 原创 【深度学习】——损失函数 原创 【深度学习】——梯度下…

史陶比尔机器人的 LLI (Low Level Interface)

史陶比尔机器人的 LLI &#xff08;Low Level Interface&#xff09; 史陶比尔机器人拥有 Low Level Interface (LLI)接口选项. 在CS8C控制器的时代&#xff0c;LLI 接口仍然可用。这是一个选项接口。.这是除了VAL3编程语言之外的替代操作系统。通过C程序替代你的程序。 这里的…

阳狮集团与阿里巴巴全域营销伙伴关系再升级:数据和业务合作将更紧密

3月6日&#xff0c;阿里巴巴集团与全球领先的广告传播集团阳狮集团在上海开启了主题为“新局面新高度”新阶段的合作沟通&#xff0c;未来双方将进行更紧密的数据和业务层面的合作。阿里巴巴集团CMO、阿里妈妈总裁董本洪及阳狮媒体大中华区首席执行官张敬鸾就开放共赢达成共识&…