使用智能DNS解析判断用户是否为境外访问

根据业务需要,应用需要对境内外不同用户群体采取不同浏览策略,我们首先想到的是动态获取ip所在地进行分析,然后用不同的逻辑处理,所以选用了淘宝的ip地址库

接口说明

1. 请求接口(GET):

http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]

2. 响应信息:

(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商

3. 返回数据格式:

{“code”:0,”data”:{“ip”:”210.75.225.254”,”country”:”\u4e2d\u56fd”,”area”:”\u534e\u5317”,
“region”:”\u5317\u4eac\u5e02”,”city”:”\u5317\u4eac\u5e02”,”county”:””,”isp”:”\u7535\u4fe1”,
“country_id”:”86”,”area_id”:”100000”,”region_id”:”110000”,”city_id”:”110000”,
“county_id”:”-1”,”isp_id”:”100017”}}
其中code的值的含义为,0:成功,1:失败。

服务是免费的,但访问频率只能小于1QPS,拿来娱乐还可以,商用就不灵了,看了其他收费的ip地址查询接口都觉得费用不合理,考虑购买ip地址库自己做查询接口,最后发现阿里云有免费的域名智能解析功能:

1 . 传统DNS解析示例

例如域名www.dns-example.com,有三台服务器,分别是联通IP,移动IP,电信IP,DNS解析配置如下:

  • 将域名 指向 联通IP地址 (1.1.1.1)
  • 将域名 指向 移动IP地址 (2.2.2.2)
  • 将域名 指向 电信IP地址 (3.3.3.3)

可实现的解析效果

传统DNS解析不判断访问者的来源,会将1.1.1.1、2.2.2.2、3.3.3.3三个地址全部返回给访问者的本地DNS,由访问者的本地DNS通过随机或者优选的方式将其中一个IP地址返回给访问者,传统DNS解析有可能会造成访问者跨网访问。

2 . 智能DNS解析示例

例如域名www.dns-example.com,有三台服务器,分别是联通IP,移动IP,电信IP,DNS解析配置如下:

  • 解析线路配置 默认线路 指向 联通IP地址 (1.1.1.1)
  • 解析线路配置 移动线路 指向 移动IP地址 (2.2.2.2)
  • 解析线路配置 电信线路 指向 电信IP地址 (3.3.3.3)

可实现的解析效果

云解析会判断访问者的来源,为来源于移动运营商的访问者云解析返回2.2.2.2的解析地址,为来源于电信运营商的访问者云解析返回3.3.3.3的解析地址,其他来源的访问者云解析返回1.1.1.1的解析地址

除移动联通电信外,还有针对境内外、搜索引擎的智能解析。

这样可以把同一个域名分默认和境外两条线路来做智能解析,可以分别指向两台服务器,或者境外线路指向指定的CNAME,用nginx判断server_name做业务处理,这样可以零延迟判断用户是否是境外用户。

扩展应用

cloudflare是很好的cdn厂商,但对境内用户并不友好(其实应该说境内环境对他不太友好),延迟很高,但境外加速非常好,如果网站有对外业务,可以选择智能解析,对境内外用户指定不同CDN厂商,加快访问,节约开支。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇