using System;
using System.IO;
using System.Net;
using System.Text;
///
/// =============================================================
/// CSDN识别 Demo (C#版)
///
/// 功能说明:
/// 提交CSDN验证码识别任务(目前支持文字点选)
///
/// 使用方法:
/// 1. 将下方的 APPKEY 替换为你自己的用户密钥
/// 2. 将 CSDN_COOKIE 替换为你获取到的 waf_captcha_marker cookie值
/// 3. 编译运行:csc RecognizeCsdn.cs && RecognizeCsdn.exe
/// 或使用 dotnet run
/// =============================================================
///
class RecognizeCsdn
{
// ======================== 配置区域(请替换为你自己的参数)========================
// 用户密钥,登录平台后获取
static string APPKEY = "你的appkey";
// CSDN验证码的 waf_captcha_marker cookie字段值(从浏览器抓包获取)
static string CSDN_COOKIE = "你获取到的cookie";
// 项目类型,CSDN固定填写 600(特殊类型请联系客服)
static int ITEM_ID = 600;
// 可选参数:代理IP(格式示例:http://IP:端口,若需白名单支持请联系客服。http://账号:密码@proxy.com:8080 或 socks5://127.0.0.1:9888)
static string PROXY = "";
// 可选参数:开发者密钥(如果有的话填写)
static string DEVKEY = "";
// 可选参数:User-Agent(如果需要的话填写)
static string UA = "";
// ===============================================================================
// API基础地址
static string API_BASE = "http://api.ttocr.com/api";
///
/// 发送POST请求(表单数据)
///
static string HttpPost(string url, string postData)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Timeout = 120000; // 识别可能需要较长时间
byte[] data = Encoding.UTF8.GetBytes(postData);
request.ContentLength = data.Length;
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine(new string('*', 60));
Console.WriteLine(" CSDN识别 Demo (C#版)");
Console.WriteLine(new string('*', 60));
// 检查参数是否已配置
if (APPKEY == "你的appkey")
{
Console.WriteLine("\n[错误] 请先在代码顶部的配置区域填写你的 APPKEY");
Environment.Exit(1);
}
if (CSDN_COOKIE == "你获取到的cookie")
{
Console.WriteLine("\n[错误] 请先在代码顶部的配置区域填写 CSDN_COOKIE");
Environment.Exit(1);
}
Console.WriteLine(new string('=', 50));
Console.WriteLine("[CSDN识别] 正在提交CSDN识别任务...");
Console.WriteLine(new string('=', 50));
try
{
string url = API_BASE + "/recognize2";
// 构建POST请求数据
StringBuilder postData = new StringBuilder();
postData.Append("appkey=").Append(Uri.EscapeDataString(APPKEY));
postData.Append("&cookie=").Append(Uri.EscapeDataString(CSDN_COOKIE));
postData.Append("&itemid=").Append(ITEM_ID);
// 如果设置了代理,则添加代理参数
if (!string.IsNullOrEmpty(PROXY))
{
postData.Append("&proxy=").Append(Uri.EscapeDataString(PROXY));
}
// 如果设置了开发者密钥,则添加
if (!string.IsNullOrEmpty(DEVKEY))
{
postData.Append("&devkey=").Append(Uri.EscapeDataString(DEVKEY));
}
// 如果设置了UA,则添加
if (!string.IsNullOrEmpty(UA))
{
postData.Append("&ua=").Append(Uri.EscapeDataString(UA));
}
Console.WriteLine("[请求参数] cookie=" + CSDN_COOKIE.Substring(0, Math.Min(20, CSDN_COOKIE.Length)) + "...");
Console.WriteLine("[请求参数] itemid=" + ITEM_ID);
string result = HttpPost(url, postData.ToString());
Console.WriteLine("[完整响应] " + result);
}
catch (Exception e)
{
Console.WriteLine("[异常] 网络请求出错:" + e.Message);
}
Console.WriteLine();
Console.WriteLine(new string('=', 50));
Console.WriteLine("[完成] 识别执行完毕");
Console.WriteLine(new string('=', 50));
}
}