PHP實作百度文心一言介面的流量監控和防止惡意請求方案
一言介面是百度提供的一個非常受歡迎的API,透過調用這個介面可以獲得一句隨機的文心一言。然而,在實際應用中,由於介面的存取量很大,可能會面臨流量過大甚至惡意請求的問題。本文將介紹如何使用PHP來實現這個介面的流量監控和防止惡意請求方案。
首先,我們需要在自己的伺服器上部署一個PHP腳本來作為中間件,接收客戶端的請求並呼叫百度文心一言的介面。以下是一個簡單的範例程式碼:
<?php function getOneWord() { $url = 'https://api.gushi.ci/all.json'; $data = file_get_contents($url); $result = json_decode($data, true); return $result['content']; } // 检查IP是否被限制访问(60秒最多访问100次) function checkIP() { $ip = $_SERVER['REMOTE_ADDR']; $file = './ip.txt'; $time = time(); $lines = file($file); // 删除过期的记录 foreach ($lines as $key => $line) { $record = explode(',', $line); if ($time - $record[0] > 60) { unset($lines[$key]); } } file_put_contents($file, implode($lines)); // 统计当前IP的请求次数 $count = 0; foreach ($lines as $line) { $record = explode(',', $line); if ($record[1] == $ip) { $count++; } } // 超过限制次数 if ($count >= 100) { return false; } // 添加新的请求记录 file_put_contents($file, $time . ',' . $ip . PHP_EOL, FILE_APPEND); return true; } // 允许跨域访问 header('Access-Control-Allow-Origin: *'); // 检查IP是否被限制访问 if (!checkIP()) { die('请求过于频繁,请稍后再试!'); } // 调用百度文心一言接口 $oneWord = getOneWord(); // 返回结果 echo $oneWord; ?>
在上述程式碼中,我們首先編寫了getOneWord()
函數,用於呼叫百度文心一言介面並傳回一句文心一言。然後,checkIP()
函數用來檢查客戶端的IP位址是否超過了存取頻率限制。這裡我們將IP位址記錄在一個文字檔案中,並且定期清除過期的記錄。如果某個IP位址的請求次數超過了限制(60秒內最多存取100次),則傳回錯誤訊息,否則新增新的請求記錄。
接下來,我們在PHP腳本的開頭添加了header('Access-Control-Allow-Origin: *')
,這是為了允許跨域訪問,方便客戶端調用該接口。最後,我們根據呼叫結果傳回對應的內容。
要想測試這個方案的效果,可以將上述程式碼儲存為PHP文件,然後在瀏覽器中存取這個文件,即可取得到一句文心一言。為了模擬並發請求,可以使用多個瀏覽器視窗或工具來同時存取這個接口,觀察是否會收到請求過於頻繁的錯誤提示。
透過上述方案,我們實現了百度文心一言介面的流量監控和防止惡意請求的功能。可根據需要對存取頻率限制進行調整,以適應實際的請求量。同時,我們也為該介面添加了跨域存取的支持,方便客戶端呼叫。這種方式的優點在於使用簡單,成本較低,能夠有效地保護介面不被濫用。
希望上述內容對你有幫助,祝您的專案順利!
以上是PHP實現百度文心一言介面的流量監控與防止惡意請求方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!