實現原理
- 首次請求
https://www.simsimi.com/ 獲取 Session Cookie。
- 攜帶 Cookie 及 Referer 請求 API
https://www.simsimi.com/func/req?lc=ch&msg=內容&ft=0.0。
- 解析 JSON 回復,提取
response 字段。
完整封裝函數
<?php
function simsimi($keyword) {
$keyword = urlencode(urlencode($keyword)); // 雙重編碼
// 1. 獲取 Cookie
$ch = curl_init('https://www.simsimi.com/');
curl_setopt_array($ch, [
CURLOPT_HEADER => 1,
CURLOPT_RETURNTRANSFER => 1,
]);
$content = curl_exec($ch);
list($header) = explode("\r\n\r\n", $content, 2);
preg_match('/set-cookie:([^;]+)/i', $header, $m);
$cookie = $m[1] ?? '';
curl_close($ch);
// 2. 請求回復
$url = "https://www.simsimi.com/func/req?lc=ch&msg=$keyword&ft=0.0";
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_REFERER => 'https://www.simsimi.com/talk.htm?lc=ch',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_COOKIE => $cookie,
]);
$resp = json_decode(curl_exec($ch), true);
curl_close($ch);
return ($resp['result'] ?? '') === '100' ? $resp['response'] : '我還不會回答這個問題...';
}
// 使用
echo simsimi('你好');
?>
注意事項
- 官方 API 可能變更、限流或需登錄,長期穩定建議申請官方開發者 Key 或使用其他成熟 NLP 服務(如圖靈、百度 UNIT、OpenAI)。
- 雙重
urlencode 針對特殊字符傳輸,視實際 API 要求調整。
- 請遵守 Simsimi 服務條款,勿用於商業濫發。