- 積分
- 1929
- 金幣
- 8 個(gè)
- 社區(qū)幣
- 0 元
已臻大成
- 貢獻(xiàn)
- 14 點(diǎn)
- 金幣
- 8 個(gè)
|
沙發(fā)
樓主 |
發(fā)表于 2025-10-7 16:17:46
來自手機(jī)
|
只看Ta
測試方式
在論壇根目錄新建php文件
內(nèi)容:
- <?php
- // 增強(qiáng)版客戶端IP測試(騰訊云EdgeOne專用)
- echo "<h2>騰訊云EdgeOne客戶端IP測試</h2>";
- // 1. 核心IP字段檢測
- $ipSources = [
- 'REMOTE_ADDR' => '服務(wù)器直接連接IP',
- 'HTTP_X_FORWARDED_FOR' => '代理鏈IP(可能包含多個(gè))',
- 'HTTP_EO_CLIENT_IP' => 'EdgeOne客戶端IP',
- 'HTTP_EO_CONNECTING_IP' => 'EdgeOne連接IP',
- 'HTTP_X_REAL_IP' => 'Nginx真實(shí)IP',
- 'HTTP_CF_CONNECTING_IP' => 'Cloudflare專用頭(兼容性檢測)'
- ];
- echo "<h3>?? 核心IP地址信息:</h3>";
- foreach ($ipSources as $key => $desc) {
- $value = $_SERVER[$key] ?? '未設(shè)置';
- $highlight = (strpos($value, '.') !== false) ? "style='color:red;font-weight:bold'" : "";
- echo "<b>{$desc}</b> [{$key}]: <span {$highlight}>{$value}</span><br>";
- }
- // 2. EdgeOne專屬頭檢測
- $eoHeaders = [
- 'HTTP_CDN_LOOP' => 'CDN循環(huán)標(biāo)識',
- 'HTTP_EO_LOG_UUID' => '請求唯一ID',
- 'HTTP_X_FORWARDED_PROTO' => '傳輸協(xié)議',
- 'HTTP_CDN_SRC_IP' => 'CDN源IP(如有)'
- ];
- echo "<h3>?? EdgeOne專屬頭信息:</h3>";
- foreach ($eoHeaders as $key => $desc) {
- $value = $_SERVER[$key] ?? '未設(shè)置';
- echo "<b>{$desc}</b> [{$key}]: {$value}<br>";
- }
- // 3. 安全與協(xié)議頭檢測
- $securityHeaders = [
- 'HTTP_SEC_CH_UA' => '用戶代理品牌',
- 'HTTP_SEC_CH_UA_MOBILE' => '移動設(shè)備標(biāo)識',
- 'HTTP_SEC_CH_UA_PLATFORM' => '操作系統(tǒng)',
- 'HTTP_X_FORWARDED_PROTO' => '前端協(xié)議',
- 'HTTP_X_FORWARDED_PORT' => '前端端口'
- ];
- echo "<h3>??? 安全與協(xié)議信息:</h3>";
- foreach ($securityHeaders as $key => $desc) {
- $value = $_SERVER[$key] ?? '未設(shè)置';
- echo "<b>{$desc}</b> [{$key}]: {$value}<br>";
- }
- // 4. 完整頭信息(過濾后)
- echo "<h3>?? 完整相關(guān)頭信息:</h3>";
- foreach ($_SERVER as $key => $value) {
- // 過濾顯示關(guān)鍵頭信息
- if (strpos($key, 'HTTP_') === 0 ||
- strpos($key, 'REMOTE_') === 0 ||
- strpos($key, 'CDN_') === 0 ||
- strpos($key, 'EO_') === 0) {
- echo "<b>{$key}</b>: " . htmlspecialchars($value) . "<br>";
- }
- }
- // 5. 客戶端真實(shí)IP判定邏輯
- echo "<h3>?? 客戶端真實(shí)IP判定:</h3>";
- $clientIp = '';
- // EdgeOne優(yōu)先檢測
- if (!empty($_SERVER['HTTP_EO_CLIENT_IP'])) {
- $clientIp = $_SERVER['HTTP_EO_CLIENT_IP'];
- echo "<p style='color:green'>? 通過 HTTP_EO_CLIENT_IP 獲取真實(shí)IP: {$clientIp}</p>";
- } elseif (!empty($_SERVER['HTTP_EO_CONNECTING_IP'])) {
- $clientIp = $_SERVER['HTTP_EO_CONNECTING_IP'];
- echo "<p style='color:green'>? 通過 HTTP_EO_CONNECTING_IP 獲取真實(shí)IP: {$clientIp}</p>";
- }
- // 標(biāo)準(zhǔn)代理頭檢測
- elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
- $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
- $clientIp = trim($ips[0]);
- echo "<p style='color:orange'>?? 通過 HTTP_X_FORWARDED_FOR 獲取IP: {$clientIp} (需驗(yàn)證代理鏈)</p>";
- }
- // 最后回退方案
- else {
- $clientIp = $_SERVER['REMOTE_ADDR'] ?? '未知';
- echo "<p style='color:red'>? 使用 REMOTE_ADDR 作為IP: {$clientIp} (可能不是真實(shí)客戶端IP)</p>";
- }
- // 6. IP地理位置查詢
- if (filter_var($clientIp, FILTER_VALIDATE_IP)) {
- $geoUrl = "http://ip-api.com/json/{$clientIp}?fields=status,country,regionName,city,isp,org,as";
- $geoData = @file_get_contents($geoUrl);
-
- if ($geoData) {
- $geoInfo = json_decode($geoData, true);
- if ($geoInfo['status'] === 'success') {
- echo "<h3>?? IP地理位置信息:</h3>";
- echo "IP: {$clientIp}<br>";
- echo "位置: {$geoInfo['country']} - {$geoInfo['regionName']} - {$geoInfo['city']}<br>";
- echo "ISP: {$geoInfo['isp']}<br>";
- echo "組織: {$geoInfo['org']}<br>";
- echo "ASN: {$geoInfo['as']}";
- }
- }
- }
- // 7. 配置建議
- echo "<h3>?? EdgeOne配置建議:</h3>";
- echo "<ul>
- <li>確保EdgeOne的『客戶端IP透傳』功能已開啟</li>
- <li>在源站服務(wù)器配置中啟用『接受客戶端IP頭』選項(xiàng)</li>
- <li>在Nginx配置中添加: <code>real_ip_header X-Forwarded-For; set_real_ip_from 0.0.0.0/0;</code></li>
- <li>測試時(shí)清除瀏覽器緩存避免CDN緩存影響</li>
- </ul>";
- ?>
復(fù)制代碼 |
|