Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 编译(几乎)所有代理标头以检索真实用户ip?_Php_Ip Address - Fatal编程技术网

Php 编译(几乎)所有代理标头以检索真实用户ip?

Php 编译(几乎)所有代理标头以检索真实用户ip?,php,ip-address,Php,Ip Address,作为插件作者,我的插件将用于许多不同的服务器配置。如果插件需要检索代理后面的真实用户IP,而代理是一个已知的代理,如Cloudflare,我可以使用quiet来检索IP地址 但如果我不知道哪个代理已经就位(如果正在使用的话),这就变得更加困难了。因此,插件需要一个(几乎)完整的代理头列表进行测试,直到插件检索到有效的用户IP地址。我还需要确保插件以正确的顺序测试代理头。如果我先测试REMOTE\u ADDR,它将返回一个有效的IP,但它将是代理的IP,而不是用户的IP (我知道,IP地址可以被欺

作为插件作者,我的插件将用于许多不同的服务器配置。如果插件需要检索代理后面的真实用户IP,而代理是一个已知的代理,如Cloudflare,我可以使用quiet来检索IP地址

但如果我不知道哪个代理已经就位(如果正在使用的话),这就变得更加困难了。因此,插件需要一个(几乎)完整的代理头列表进行测试,直到插件检索到有效的用户IP地址。我还需要确保插件以正确的顺序测试代理头。如果我先测试
REMOTE\u ADDR
,它将返回一个有效的IP,但它将是代理的IP,而不是用户的IP

(我知道,IP地址可以被欺骗。目标不是100%获得正确的IP地址,而是尽可能接近。)

下面是我到目前为止收集到的代理头的列表。我不确定它们是否都相关,或者顺序是否理想

请查看并添加/删除代理标头,并优化列表的顺序:

$proxy_headers = [
    'HTTP_CF_CONNECTING_IP', // Cloudflare
    'HTTP_TRUE_CLIENT_IP', // Cloudflare Enterprise
    'HTTP_INCAP_CLIENT_IP', // Incapsula
    'HTTP_X_SUCURI_CLIENTIP', // Sucuri
    'HTTP_FASTLY_CLIENT_IP', // Fastly
    'HTTP_X_FORWARDED_FOR', // any proxy
    'HTTP_X_FORWARDED',
    'HTTP_X_CLUSTER_CLIENT_IP',
    'HTTP_FORWARDED_FOR',
    'HTTP_FORWARDED',
    'HTTP_CLIENT_IP',
    'REMOTE_ADDR'
];
如果您找到一个指向其中一个代理标题的文档链接,如果您可以将其添加到链接列表中,那就太好了。这是我找到的


不确定这是否最好作为链接问题的答案发布。这可能是有关该问题的有用资源,有助于获取正确的地址。您认为将链接的问题标记为community wiki,然后添加代理信息有意义吗?