请求第三方接口绕过白名单操作
# 1. 直接修改请求头的 X-Forwarded-For
字段
某些第三方接口会检查 X-Forwarded-For
请求头来确认请求来源。在这种情况下,你可以尝试修改 X-Forwarded-For
来伪装为其他 IP 地址。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://thirdparty.com/api");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 设置请求头,伪装IP
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-Forwarded-For: 1.2.3.4', // 伪装的 IP
));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# X-Forwarded-For
的作用流程
- 客户端发出请求:原始请求中不包含
X-Forwarded-For
,只包含客户端的 IP 地址。 - 代理服务器接收请求:代理服务器或负载均衡器会将客户端的 IP 地址加入
X-Forwarded-For
头字段,表示该请求来自的客户端。 - 目标服务器处理请求:目标服务器可以通过
X-Forwarded-For
头字段获知请求的原始 IP 地址(如果服务器配置允许信任代理提供的X-Forwarded-For
值)。
# 实际用途
- IP 记录:帮助服务器识别请求的真实 IP,特别是当请求通过多个代理时。
- 访问控制:服务器可以根据
X-Forwarded-For
的值来限制访问源,允许或拒绝请求。 - 绕过 IP 白名单:有时,可以通过伪造
X-Forwarded-For
来欺骗某些服务器,从而绕过其对 IP 地址的限制。
不过,请注意伪造 X-Forwarded-For
并不总是有效,尤其是在一些严格配置的服务器或防火墙中。
# 使用 Guzzle 发送 X-Forwarded-For
请求
use GuzzleHttp\Client;
$client = new Client();
// 假设你要请求的目标 URL
$url = 'https://example.com';
// 设置 X-Forwarded-For 头部
$response = $client->request('GET', $url, [
'headers' => [
'X-Forwarded-For' => '123.45.67.89', // 模拟客户端的 IP 地址
],
]);
// 输出响应
echo $response->getBody();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
在线编辑 (opens new window)
上次更新: 2025/02/25, 18:30:54