这两天一直在研究链接坐标之类的问题,下午正好有机会和大家分享一下.
背景:
目前搜狗舆图的舆图瓦片的链接情势如:http://p2.go2map.com/seamless1/0/174/718/2/0/405_149.png。空间上相邻的瓦片其链接的差异在于x,y坐标相差1。
用简单的函数关系表现就是:
f(x,y) = link/x_y.png
f(x+1, y) = link/x+1_y.png
f(x, y+1) = link/x_y+1.png
百度舆图、谷歌舆图也是雷同做法。
问题:
该链接计划的问题在于,其他公司或个人可以很方便地抓取、应用所有舆图瓦片。比如要抓取北京市某个缩放级别上的瓦片,只需要找到该级别下北京市左下角和右上角的瓦片坐标,然后每次坐标递增1即可很方便地失掉区域中所有瓦片对应的链接,从而抓到整个北京市的图片。
解决计划:
关键在于打破空间上相邻的瓦片的链接相关性,使之没法猜测出相邻瓦片的链接。
用简单的函数关系表现就是:
g(x,y) = link/a.png
g(x+1, y) = link/b.png
g(x, y+1) = link/c.png
最简单的方法就是对链接整体加密(变型),使之不体现坐标的数据。退一步的方法是只对坐标信息加密(变型),比如应用简单的循环位移和掩码。
有如:
g(x,y) = link/h(x,y).png
h(x,y) = ((x << 32| y) <<< 10) & MASK.
加密(变型)的方法比拟开放,关键在于保证链接和坐标的一一对应,并且有较好的隐蔽性。
收益:
其他公司或个人抓取某个区域的在线舆图瓦片变得困难,或者即便抓取到区域内所有瓦片也没法应用----因为没有获得瓦片的空间位置信息。
文章结束给大家分享下程序员的一些笑话语录:
某程序员对书法十分感兴趣,退休后决定在这方面有所建树。花重金购买了上等的文房四宝。一日突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风 范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:hello world.