5种实用方法详解,教你轻松掌握IP获取技术
⚠️ 仅供学习和合法用途使用
2025年6月3日更新
本文内容仅供技术学习和网络安全研究使用。请遵守相关法律法规,不得用于非法用途。未经他人同意获取其IP地址可能涉及隐私侵犯,请谨慎使用。
IP地址(Internet Protocol Address)是网络设备在互联网上的唯一标识,就像现实中的门牌号码。了解如何获取IP地址对于网络安全防护、系统管理和技术研究都有重要意义。
WhatsTheirIP是专业的IP追踪平台,提供简单易用的工具来获取访问者IP地址信息。
// 已移除API相关代码,普通用户无需API接口或密钥
url: targetUrl,
title: '有趣的链接'
})
});
const data = await response.json();
return data.shortUrl; // 返回短链接
};
// 使用示例
createTrackingLink('https://example.com').then(shortUrl => {
console.log('追踪链接:', shortUrl);
});
如果你有自己的网站,可以通过分析网站访问日志来获取访问者的IP地址。
<?php
// 获取真实IP地址的函数
function getRealIP() {
$ip = '';
if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
// Cloudflare
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// 代理服务器
$ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
} elseif (!empty($_SERVER['HTTP_X_REAL_IP'])) {
// Nginx反向代理
$ip = $_SERVER['HTTP_X_REAL_IP'];
} else {
// 直接连接
$ip = $_SERVER['REMOTE_ADDR'];
}
return trim($ip);
}
// 记录访问者信息
function logVisitor() {
$ip = getRealIP();
$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown';
$timestamp = date('Y-m-d H:i:s');
$referer = $_SERVER['HTTP_REFERER'] ?? 'Direct';
$logData = [
'ip' => $ip,
'user_agent' => $userAgent,
'timestamp' => $timestamp,
'referer' => $referer,
'url' => $_SERVER['REQUEST_URI']
];
// 保存到文件
file_put_contents('visitor_log.txt',
json_encode($logData) . "\n",
FILE_APPEND | LOCK_EX
);
return $ip;
}
// 使用示例
$visitorIP = logVisitor();
echo "访问者IP: " . $visitorIP;
?>
通过创建吸引人的内容页面,诱导目标用户访问,从而获取其IP信息。
<!DOCTYPE html>
<html>
<head>
<title>有趣的网页工具</title>
<style>
body { font-family: Arial, sans-serif; text-align: center; padding: 50px; }
.container { max-width: 600px; margin: 0 auto; }
.btn { background: #007bff; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; }
</style>
</head>
<body>
<div class="container">
<h1>🎉 免费网速测试工具</h1>
<p>点击下方按钮测试你的网络速度</p>
<button class="btn" onclick="startTest()">开始测试</button>
<div id="result"></div>
</div>
<script>
async function startTest() {
// 显示加载状态
document.getElementById('result').innerHTML = '正在测试中...';
// 发送IP信息到服务器
try {
const response = await fetch('/collect-ip.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
action: 'speed_test',
timestamp: new Date().getTime()
})
});
// 模拟测试结果
setTimeout(() => {
document.getElementById('result').innerHTML =
'<h3>测试完成!</h3><p>下载速度: 50 Mbps<br>上传速度: 10 Mbps</p>';
}, 2000);
} catch (error) {
console.error('Error:', error);
}
}
</script>
</body>
</html>
在邮件中嵌入1x1像素的透明图片,当收件人打开邮件时自动获取其IP地址。
<!-- 在邮件HTML中添加追踪像素 -->
<img src="https://grabify.icu/track/email-{unique_id}?format=pixel"
width="1" height="1" style="display:none;" alt="">
<!-- PHP后端处理追踪请求 -->
<?php
// track-email.php
$uniqueId = $_GET['id'] ?? 'unknown';
$ip = $_SERVER['REMOTE_ADDR'];
$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
$timestamp = date('Y-m-d H:i:s');
// 记录邮件打开信息
$trackingData = [
'email_id' => $uniqueId,
'ip_address' => $ip,
'user_agent' => $userAgent,
'opened_at' => $timestamp,
'country' => getCountryFromIP($ip)
];
// 保存到数据库
$pdo = new PDO("mysql:host=localhost;dbname=tracking", $user, $pass);
$stmt = $pdo->prepare("INSERT INTO email_tracking (email_id, ip_address, user_agent, opened_at, country) VALUES (?, ?, ?, ?, ?)");
$stmt->execute(array_values($trackingData));
// 返回1x1透明PNG图片
header('Content-Type: image/png');
echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==');
function getCountryFromIP($ip) {
$response = file_get_contents("http://ip-api.com/json/{$ip}");
$data = json_decode($response, true);
return $data['country'] ?? 'Unknown';
}
?>
使用网络命令和工具来分析网络连接,获取对方IP信息。
# 查看当前网络连接
netstat -an | findstr ESTABLISHED
# 查看路由表
route print
# 追踪网络路径
tracert www.example.com
# 使用ping命令
ping -t www.example.com
# 查看ARP表(局域网内)
arp -a
# 使用nslookup查询DNS
nslookup www.example.com
# PowerShell网络连接分析
Get-NetTCPConnection | Where-Object {$_.State -eq "Established"} |
Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, @{
Name="ProcessName";
Expression={(Get-Process -Id $_.OwningProcess).ProcessName}
}
# 批量IP信息查询
$ips = @("8.8.8.8", "1.1.1.1", "114.114.114.114")
foreach ($ip in $ips) {
try {
$result = Invoke-RestMethod -Uri "http://ip-api.com/json/$ip"
Write-Host "IP: $ip - 国家: $($result.country) - 城市: $($result.city)"
} catch {
Write-Host "查询 $ip 失败"
}
}
// 检测可疑的追踪行为
function detectSuspiciousActivity() {
// 检查URL参数
const urlParams = new URLSearchParams(window.location.search);
const suspiciousParams = ['track', 'ref', 'utm_source', 'id'];
let suspiciousCount = 0;
suspiciousParams.forEach(param => {
if (urlParams.has(param)) {
suspiciousCount++;
}
});
// 检查referrer
const referrer = document.referrer;
const suspiciousDomains = ['grabify', 'iplogger', 'bit.ly'];
const hasSuspiciousReferrer = suspiciousDomains.some(domain =>
referrer.includes(domain)
);
if (suspiciousCount > 2 || hasSuspiciousReferrer) {
console.warn('检测到可能的IP追踪行为');
return true;
}
return false;
}
// 运行检测
if (detectSuspiciousActivity()) {
alert('警告:此页面可能正在尝试获取您的IP地址!');
}
学习IP获取技术的目的应该是提升网络安全意识和技术能力。在实际应用中,务必遵守相关法律法规,尊重他人隐私,并且只在合法授权的情况下使用这些技术。
获取他人IP地址虽然在技术上并不复杂,但涉及到隐私和法律问题。通过本文介绍的5种方法,你可以了解IP获取的基本原理和实现方式。
记住:
学习如何使用二维码进行IP追踪
深入了解邮件追踪的技术原理