我需要Opera Mini的代理ip地址在Geo模块(nginx)中使用它。Nginx可以自动使用x - forward - for头代理,但哪里得到代理列表?
我不确定我完全理解你想要解决的问题,但我假设你想为最终用户实现一些地理定位功能,你的问题是关于使用什么IP地址。
如果是,请参阅Opera Mini请求头和X-Forwarded-For的文档:http://dev.opera.com/articles/view/opera-mini-request-headers/
X-Forwarded-For
包含一个以逗号分隔的代理服务器列表,该列表是请求在从设备到Mini代理的过程中所传递的代理服务器。列表中不是内部IP的第一项将始终是连接到迷你代理的IP地址,因此它是关于请求起源的最可靠的信息来源,并且适合地理位置等。
在opera网站上找不到官方名单。以下是一些ip
[EDIT]这里删除了我原始答案的一段,因为这可能会误导。在阅读了nginx GeoIP源代码后,似乎有必要知道所有的"可信的"opera迷你代理,这样nginx GeoIP模块可以使用x-forwarded-for头获取这些代理背后的IP。
您确定Opera IP地址不在MaxMind数据库中吗?(这是nginx模块默认使用的DB)
我的第一个赌注是认为这些IP地址将在MaxMind列表中,作为代理或不是。
但我认为最好的事情是做一个快速测试使用opera代理和其他代理从任何公共HTTP代理列表资源。然后验证您是否正在获取代理IP的地理位置。
请记住配置Nginx为地理位置使用x-forward -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 Mini和Opera Turbo的代理(但实际上是MITM)服务器驻留在"Opera Software AS" IP地址块中,其中包括:
<>之前37.228.104.0 255.255.248.082.145.208.0 255.255.240.0107.167.96.0 255.255.224.0141.0.8.0 255.255.248.0185.26.180.0 255.255.252.0