1.公司网站的需求
按来访人的IP来判断他是进中文网站还是英文网站。根据是中国的ip就进入中文页面,国外的就进入英文页面。
2.方案
2.1.通过ip地址数据库判断(速度慢,但准确)
2.2. 通过浏览器语言判断(绕过了ip判断,速度快,但不准确)
2.3 调用ip网站的接口判断,把结果解析出来
2.4 通过客户端操作系统的类型来判断
3.具体过程
3.1 使用地址数据库
step 1:
首先你需要从官方获取一份分配给中国的IP数据,Apnic提供了每日更新的亚太地区IPv4,IPv6,AS号分配的信息表,访问url是
http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
该文件的格式与具体内容参加
ftp://ftp.apnic.net/pub/apnic/stats/apnic/README.TXT
这个组织是APNIC(Asia Pacific Network Information Center),就是IANA下面管亚洲的所谓的官方。
有了这个连接是不停更新的。所以你可以自己维护一个逻辑,定时刷新自己的数据库,然后拿IP去比较。一共有十几万条表象,最简单的就是内存中做个Map,最好是RangeMap,这样就能快速的进行查询了。
curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' >china_ip.txt
other
Detect Online Fraud and Locate Online Visitors
3.2 通过浏览器语言判断(绕过了ip判断,速度快,但不准确)
Javascript判断来访者的浏览器语言,如果是中文系统,自然使用者都是中国人,跳中文网站;
如果是非中文系统,默认使用者非中国人,跳英文网站。
优点:判断反映速度快。
缺点:不准确,有可能中国用户喜欢用英文版系统,或者外国人使用中文系统的情况。
var Browser_Agent = navigator.userAgent;
// 浏览器为ie的情况
if (Browser_Agent.indexOf( " MSIE " ) !=- 1 ){
var a = navigator.browserLanguage;
if (a != " zh-cn " ){
// 跳转到英文网站
location.href = " 英文网站 " ;
}
}
// 浏览器非ie的情况
else {
var b = navigator.language;
if (b != " zh-CN " ){
// 跳转到英文网站
location.href = " 英文网站 " ;
}
}
3.3 调用ip网站的接口
python
用python调用网站的接口。
api_url = 'http://www.ip.cn/%s' % ip
http:///www.ip138.com/ips138.asp%3Fip%3D196.24.149.98%26action%3D2
获得返回的网页
text = driver.find_element_by_xpath('//div[@id="result"]').text
把结果解析出来就可以了
3.4 通过客户端操作系统的类型来判断
用javascript识别操作系统语言来切换网页语言更简单
<script language=javascript>
alert(navigator.systemLanguage);
</script>
IP Geolocation