我需要 Opera Mini 的代理 IP 地址才能在 Geo 模块(nginx)中使用它。Nginx 可以自动为代理使用 X-FORWARDED-FOR 标头,但是从哪里获取代理列表?
4 回答
不确定我是否完全理解您要解决的问题,但我假设您想为最终用户实施一些地理定位功能,而您的问题是关于使用什么 IP 地址。
如果是这样,请参阅 Opera Mini 请求标头和 X-Forwarded-For 的文档: http ://dev.opera.com/articles/view/opera-mini-request-headers/
X-Forwarded-For
这包含请求在从设备到 Mini 代理的途中传递的代理服务器的逗号分隔列表。列表中第一项不是内部 IP 的将始终是连接到 Mini 代理的 IP 地址,因此它是有关请求来源的最可靠信息来源,适用于地理定位等。
您确定 Opera IP 地址不在 MaxMind 数据库中吗?(这是 nginx 模块默认使用的数据库)
我的第一个赌注是认为这些 IP 地址将在 MaxMind 列表中,无论是否是代理。
但我认为最好的办法是使用 Opera 代理和来自任何公共HTTP 代理列表资源的另一个代理进行快速测试。然后验证您是否获得了代理 IP 的地理位置。
请记住将 Nginx 配置为使用 x-forwarded-for IP 作为地理位置。
real_ip_header X-Forwarded-For;
那么一个简单的测试示例可能是:
<html>
<head>
<title>What is my IP address - determine or retrieve my IP address</title>
</head>
<body>
<?php
if (getenv(HTTP_X_FORWARDED_FOR)) {
$pipaddress = getenv(HTTP_X_FORWARDED_FOR);
$ipaddress = getenv(REMOTE_ADDR);
echo "Your Proxy IP address is : ".$pipaddress. " (via $ipaddress) " ;
} else {
$ipaddress = getenv(REMOTE_ADDR);
echo "Your IP address is : $ipaddress";
}
$country = getenv(GEOIP_COUNTRY_NAME);
$country_code = getenv(GEOIP_COUNTRY_CODE);
echo "<br/>Your country : $country ( $country_code ) ";
?>
</body>
</html>
(我只是从另一个站点复制/粘贴该示例,但我认为这做得很好)
在 Opera 网站上的任何地方都找不到官方列表。这是其中的一些ip
[编辑] 在这里删除了我原始答案的一段,因为这可能会产生误导。阅读 nginx GeoIP 源代码后,似乎有必要了解所有“受信任的”opera mini 代理,以便 nginx GeoIP 模块可以使用 x-forwarded-for 标头获取这些代理后面的 IP。
Opera Mini 和 Opera Turbo 的代理(但实际上是 MITM)服务器位于“Opera Software AS”IP 地址块中,其中包括:
37.228.104.0 255.255.248.0 82.145.208.0 255.255.240.0 107.167.96.0 255.255.224.0 141.0.8.0 255.255.248.0 185.26.180.0 255.255.252.0