调用打码平台api获取验证码 (C#版)
一、打码平台很多,这里选择两个:联众和斐斐
联众开发文档:
https://www.jsdati.com/docs/guide
斐斐开发文档:
http://docs.fateadm.com/web/#/1?page_id=1
二、联众打码
从文档可以看到联众的接口是 https://v2-api.jsdama.com/upload
大多数验证码类型是四位数字字母,从这里可以看到我们需要的类型是1001.查看类型地址:https://www.jsdati.com/docs/price
获取需要的参数并发送post请求即可:
public class LianzhongRun
{
private const string ApiCode = "https://v2-api.jsdama.com/upload";
public static string LianZhongCode(string imgUrl)
{
var img64 = NetHandle.GetImageAsBase64Url(imgUrl).Result;
LianZhongRequestModel param = new LianZhongRequestModel();
param.captchaData = img64;
param.softwareId = ;
param.softwareSecret = "";
param.username = "";
param.password = "";
// captchaType 类型,查看:https://www.jsdati.com/docs/price
param.captchaType = ;
using (var _client = new HttpClient())
{
_client.DefaultRequestHeaders.Add("host", "v2-api.jsdama.com");
_client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36");
StringContent content = new StringContent(JsonConvert.SerializeObject(param), Encoding.UTF8,
"application/json");
HttpResponseMessage response = _client.PostAsync(ApiCode, content).Result;
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine("返回结果--" + result);
if (!result.Contains("recognition")) return string.Empty;
dynamic resultObj = JsonConvert.DeserializeObject(result);
var data = resultObj["data"];
string recognition = data["recognition"];
Console.WriteLine("验证码:" + recognition);
return recognition.Trim();
}
}
}
三、斐斐打码
同样的方式,斐斐接口的请求代码如下
public class FeifeiRun
{
private static string ApiCode = "http://pred.fateadm.com/api/capreg";
private static string PdId = "";
private static string PdKey = "";
private static string AppKey = "";
private static string AppId = ""; /// <summary>
/// 斐斐打码
/// </summary>
/// <param name="imgUrl"></param>
/// <returns></returns>
public static string FeifeiCode(string imgUrl)
{
var img64 = NetHandle.GetImageAsBase64Url(imgUrl).Result;
var timestamp = TimeHelper.GetCurrentTimeUnix();
string cur_tm = TimeHelper.GetCurrentTimeUnix();
string sign = SecurityHelper.CalcSign(PdId, PdKey, cur_tm);
string asign = SecurityHelper.CalcSign(AppId, AppKey, cur_tm);
var predict_type = "";
var imgBytes = NetHandle.ReadBytes(imgUrl);
var values = new Dictionary<string, string>
{
{ "user_id",PdId},
{ "timestamp",timestamp},
{ "sign",sign},
{ "app_id",AppId},
{ "asign",asign},
{ "predict_type",predict_type},
{ "img_data",img64}
}; using (var _client = new HttpClient())
{
var content = new FormUrlEncodedContent(values);
HttpResponseMessage response = _client.PostAsync(ApiCode, content).Result;
string result = response.Content.ReadAsStringAsync().Result;
var data = JsonConvert.DeserializeObject<HttpRspData>(result);
if (!string.IsNullOrEmpty(data.RspData))
{
// 附带附加信息
HttpExtraInfo einfo = JsonConvert.DeserializeObject<HttpExtraInfo>(data.RspData);
data.einfo = einfo;
}
var resultCode = data.einfo.result.Trim();
Console.WriteLine("code:" + resultCode);
return resultCode;
}
}
}
五、完整代码
https://github.com/DavideYang125/VerificationCodeObtainDemo
调用打码平台api获取验证码 (C#版)的更多相关文章
- asp.net 模拟CURL调用微信公共平台API 上传下载多媒体文
近公司项目上在开发微信服务号的接口,需要给用户回复图片或语音或视频,这个时候就需要用到 上传下载多媒体文件接口,微信在这方面推荐采用的是开源函数库curl实现的,CURL项目包括很多版本,我主要测试的 ...
- 微信小程序wx.getLocation()获取经纬度及JavaScript SDK调用腾讯地图API获取某一类地址
简介 腾讯位置服务为微信小程序提供了基础的标点能力.线和圆的绘制接口等地图组件和位置展示.地图选点等地图API位置服务能力支持,使得开发者可以自由地实现自己的微信小程序产品. 在此基础上,腾讯位置服务 ...
- asp.net 模拟CURL调用微信公共平台API 上传下载多媒体文件接口
FormItem类 public class FormItem { public string Name { get; set; } public ParamType ParamType { get; ...
- Python3对接华三CAS平台Api获取虚拟机监控信息-渐入佳境
--时间:2021年2月3日 --作者:飞翔的小胖猪 说明 使用python对接华三CAS虚拟化平台,通过厂商提供的api接口获取每个集群下所有虚拟机的监控信息,并保存数据在本地的mariadb数据库 ...
- Python 通过打码平台实现验证码
在爬虫时,经常遇到登录需要验证码的情况,简单的验证码可以自己解决,复制的验证码需要借助机器学习,有一定的难度.还有一个简单的方案就是采用付费的打码平台. 比如R若快(http://www.ruokua ...
- 在C#中调用API获取网络信息和流量
原文 在C#中调用API获取网络信息和流量 最近一项目中要求显示网络流量,而且必须使用C#. 事实上,调用 IpHlpApi.dll 的 GetIfTable API 可以轻易获得网络信息和网络流量. ...
- 【转】百度API获取城市名地名(附源码)
在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不 ...
- 百度AI开放平台- API实战调用
百度AI开放平台- API实战调用 一. 前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...
- 如何使用Postman快速简单的调用快递物流平台快递鸟API接口
前沿 快递鸟是一家聚合类的第三方快递物流平台,目前该平台提供的产品主要以API为主.由于API不能直观的看到产品效果,需要进行API对接联调成功后才能真实的看到产品的实际效果.但是如果一上来就写代码进 ...
随机推荐
- python操作MySQL数据库的三个模块
python使用MySQL主要有两个模块,pymysql(MySQLdb)和SQLAchemy. pymysql(MySQLdb)为原生模块,直接执行sql语句,其中pymysql模块支持python ...
- 五一 DAY 5
五一 DAY 5 V 点 1----n E 边 /* Given a graph with N nodes and M unidirectional edges. Each edge e_i ...
- 2.4 Go语言基础之切片
本文主要介绍Go语言中切片(slice)及它的基本使用. 一.引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. 例如: func arraySum(x [3]int) ...
- C++ 基础学习笔记
c++中的左值与右值 左值与右值这两概念是从 c 中传承而来的,在 c 中,左值指的是既能够出现在等号左边也能出现在等号右边的变量(或表达式),右值指的则是只能出现在等号右边的变量(或表达式). 清除 ...
- python笔记4 内置函数,匿名函数.递归函数 面向对象(基础, 组合,继承)
内置函数 eval和exec eval :执行字符串中的代码并将结果返回给执行者,有返回值 exec:执行字符串中的代码,往往用于执行流程语句,没有返回值. s1 = '1+2' s2 = 'prin ...
- 报错 "Host '192.168.209.1' is not allowed to connect to this MySQL server"
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_37632381/artic ...
- DSS分发压力实验
DSS分发压力实验 昨天为验证依托DSS搭建流媒体直播监控系统的可行性,及确定实时流画面出现严重花屏的原因,做了一个压力实验. 网络拓扑如图: 1.DVR上配置4路视频(CIF / 25fps / 1 ...
- app怎么获取package与active name
1.aapt dump badging apk名称 2.adb logcat | grep START 或者 adb shell "logcat | grep START" 然后在 ...
- python 时间类型
- unity3d 嵌入iOS的 In App Purchase 应用程序内购买
Unity做东西是快,但是有些功能是需要额外开发的,比如 IAP (In App Purchase,应用程序内购买) 还好unity提供了灵活的扩展功能,允许嵌入原生代码来做一些unity未实现的功能 ...