<?php
/**
 * =============================================================
 *   CSDN识别 Demo (PHP版)
 *
 *   功能说明：
 *   提交CSDN验证码识别任务（目前支持文字点选）
 *
 *   使用方法：
 *   1. 确保PHP已安装并启用curl扩展
 *   2. 将下方的 APPKEY 替换为你自己的用户密钥
 *   3. 将 CSDN_COOKIE 替换为你获取到的 waf_captcha_marker cookie值
 *   4. 运行脚本：php recognize_csdn.php
 * =============================================================
 */

// ======================== 配置区域（请替换为你自己的参数）========================
// 用户密钥，登录平台后获取
$APPKEY = "你的appkey";

// CSDN验证码的 waf_captcha_marker cookie字段值（从浏览器抓包获取）
$CSDN_COOKIE = "你获取到的cookie";

// 项目类型，CSDN固定填写 600（特殊类型请联系客服）
$ITEM_ID = 600;

// 可选参数：代理IP（格式示例：http://IP:端口，若需白名单支持请联系客服。http://账号:密码@proxy.com:8080 或 socks5://127.0.0.1:9888）
$PROXY = "";

// 可选参数：开发者密钥（如果有的话填写）
$DEVKEY = "";

// 可选参数：User-Agent（如果需要的话填写）
$UA = "";
// ===============================================================================

// API基础地址
$API_BASE = "http://api.ttocr.com/api";

// ======================== 主流程 ========================
echo str_repeat("*", 60) . "\n";
echo "  CSDN识别 Demo (PHP版)\n";
echo str_repeat("*", 60) . "\n";

// 检查参数是否已配置
if ($APPKEY === "你的appkey") {
    echo "\n[错误] 请先在脚本顶部的配置区域填写你的 APPKEY\n";
    exit(1);
}
if ($CSDN_COOKIE === "你获取到的cookie") {
    echo "\n[错误] 请先在脚本顶部的配置区域填写 CSDN_COOKIE\n";
    exit(1);
}

echo str_repeat("=", 50) . "\n";
echo "[CSDN识别] 正在提交CSDN识别任务...\n";
echo str_repeat("=", 50) . "\n";

$url = $API_BASE . "/recognize2";

// 构建POST请求数据
$postData = array(
    'appkey' => $APPKEY,
    'cookie' => $CSDN_COOKIE,
    'itemid' => $ITEM_ID,
);
// 如果设置了代理，则添加代理参数
if (!empty($PROXY)) {
    $postData['proxy'] = $PROXY;
}
// 如果设置了开发者密钥，则添加
if (!empty($DEVKEY)) {
    $postData['devkey'] = $DEVKEY;
}
// 如果设置了UA，则添加
if (!empty($UA)) {
    $postData['ua'] = $UA;
}

$cookieDisplay = strlen($CSDN_COOKIE) > 20 ? substr($CSDN_COOKIE, 0, 20) . "..." : $CSDN_COOKIE;
echo "[请求参数] cookie=" . $cookieDisplay . "\n";
echo "[请求参数] itemid=" . $ITEM_ID . "\n";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // 识别可能需要较长时间

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo "[异常] 网络请求出错：" . curl_error($ch) . "\n";
    curl_close($ch);
    exit(1);
}
curl_close($ch);

$result = json_decode($response, true);
if ($result['status'] == 1) {
    echo "[成功] 识别成功！耗时：" . $result['time'] . "ms\n";
    echo "[识别结果] " . $result['data'] . "\n";
} else {
    echo "[失败] 识别失败，错误信息：" . $result['msg'] . "\n";
    echo "[提示] 错误状态码：" . $result['status'] . "，请参考错误代码表排查\n";
}
echo "\n[完整响应] " . json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n";

echo "\n" . str_repeat("=", 50) . "\n";
echo "[完成] 识别执行完毕\n";
echo str_repeat("=", 50) . "\n";
?>

