以下示例代码适用于 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("发送请求失败");}}
}
复制代码

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

  1. rest api 示例2_REST API教程– REST Client,REST Service和API调用通过代码示例进行了解释

    rest api 示例2 Ever wondered how login/signup on a website works on the back-end? Or how when you sear ...

  2. java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例

    本文实例通过Java的Zip输入输出流实现压缩和解压文件,前一部分代码实现获取文件路径,压缩文件名的更改等,具体如下: package com.utility.zip; import java.io. ...

  3. 【NLG】(六)文本生成评价指标—— ROUGE原理及代码示例

    前奏: [NLG](一)文本生成评价指标--BLEU原理及代码示例 [NLG](二)文本生成评价指标-- METEOR原理及代码示例 [NLG](三)文本生成评价指标-- ENTROPY原理及代码示例 ...

  4. 【NLG】(二)文本生成评价指标—— METEOR原理及代码示例

    前奏: [NLG](一)文本生成评价指标--BLEU原理及代码示例 1.METEOR原理 2004年,卡内基梅隆大学的Lavir提出评价指标中召回率的意义,基于此研究,Banerjee和Lavie(B ...

  5. 给XLua生成Unity Api的EmmyLua代码提示

    问题背景 编写Lua代码时使用Unity的Api没有代码提示影响效率,需要一个类型系统和代码提示,下面来解决这个问题 支持类型系统 Lua是动态语言,不支持声明变量类型,需要从语言外入手.有个插件叫E ...

  6. 54_pytorch GAN(生成对抗网络)、Gan代码示例、WGAN代码示例

    1.54.GAN(生成对抗网络) 1.54.1.什么是GAN 2014 年,Ian Goodfellow 和他在蒙特利尔大学的同事发表了一篇震撼学界的论文.没错,我说的就是<Generative ...

  7. Java集合的接口和类层次结构图以及代码示例

    1. Collection vs Collections 首先,"Collection"和"Collections"是两个不同的概念.正如你从下面结构图看到的, ...

  8. python logistic步骤_Python api.Logit方法代码示例

    本文整理汇总了Python中statsmodels.api.Logit方法的典型用法代码示例.如果您正苦于以下问题:Python api.Logit方法的具体用法?Python api.Logit怎么 ...

  9. 淘宝/天猫上传图片到淘宝 API 调用说明 请求示例

    upload_img-上传图片到淘宝 图片有3种 上传方式 1.GET参数imgcode直接传url(适用于已经存在的网络上的图片) 2.POST参数imgcode上传本地图片base64编码后的内容 ...

最新文章

  1. 字节跳动《Python高频面试题》火了,完整版 PDF 开放下载!
  2. 为什么只有128KB的魂斗罗,可以那么长的剧情?
  3. NHibernate之旅(10):探索父子(一对多)关联查询
  4. 洛谷P4413 R2
  5. asp服务器端作用,ASP中的服务器端脚本代码由()解释执行。 - 问答库
  6. 对具有外部依赖的Angular服务类(service class)进行单元测试的几种方式
  7. 数据结构--图的广度优先搜索
  8. linux安装多路径报错,Linux操作系统配置多路径通用教程(适用于(RHEL,CentOS,SuSE等)...
  9. 《2021新青年生长力报告》:水果青年、农货青年、设计青年,哪个最潮?
  10. Apache Hadoop 源码阅读(陆续更新)
  11. 编程漫谈及计算机硬件简介
  12. vim批量删除与插入
  13. oracle数据库安装——最详细全步骤详解
  14. 谷歌卫星地图上的奇特景象
  15. 卸载linux grub rescue,卸载linux后出现“grub rescue”,怎么处理?
  16. NVM Express Base Specification 2.0c - 2 Theory of Operation
  17. coco2d-html5制作弹弓射鸟第一部分---橡皮筋
  18. DirectX11 模板测试
  19. .NET Core 用 Blazor 做 jmeter 系列视频
  20. R语言小白学习笔记12—概率分布

热门文章

  1. python写mapreduce_用python写MapReduce函数——以WordCount为例
  2. 网站服务器需要定期重启吗,定期服务器重启的好处和障碍
  3. c语言计算a+aa+aaa_物业服务企业信用等级公布,42家获AAA级!你家小区物业怎么样?...
  4. LIBSVM在MATLAB中的使用及SVM最优参数选取示例代码
  5. 亚伦•斯沃茨:提升时间的品质
  6. 在local模式下的spark程序打包到集群上运行
  7. java基础-泛型举例详解
  8. 对 js 高程 Preflighted Reqeusts 的理解
  9. mysql 获取自增主键
  10. Android成长日记-使用GridView显示多行数据