如何用PHP cURL向IP地址范围批量发送API请求(含无效IP处理)
批量向IP段发送API请求的高效方法
你可以基于现有的PHP代码做简单修改,用循环批量遍历目标IP段,同时加入错误处理应对不存在的设备,不用反复复制粘贴。
修改后的批量处理代码
// 遍历IP段的最后一位:从1到99 for ($i = 1; $i <= 99; $i++) { // 动态生成当前IP地址 $currentIp = "2.4.7.$i"; // 拼接完整的请求URL $requestUrl = "http://$currentIp/api/profile/10/recall"; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $requestUrl, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 5, // 缩短超时时间,避免等待不存在的设备太久 CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "keep_ip_settings": false }', CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'Accept: application/json' ), )); $response = curl_exec($curl); $curlError = curl_error($curl); // 输出当前IP的处理结果,方便排查 echo "=== IP: $currentIp ===\n"; if ($curlError) { echo "请求失败: $curlError\n"; } else { echo "响应内容: $response\n"; } echo "====================\n\n"; curl_close($curl); }
关键说明
- 自动遍历IP:通过
for循环自动生成2.4.7.1到2.4.7.99的所有IP,无需手动复制粘贴 - 超时优化:把
CURLOPT_TIMEOUT设为5秒,遇到不存在的设备会快速跳过,不会卡住程序 - 结果可视化:每个IP请求完成后都会输出对应的结果,你能直接看到哪些设备成功响应、哪些连接失败
- 保留原请求逻辑:所有请求参数(POST方法、请求体、请求头)和你Postman生成的代码完全一致,确保请求效果相同
内容的提问来源于stack exchange,提问作者Adam Davies
相关产品推荐
相关产品推荐

