如何通过服务端代理访问百度地图

567 阅读1分钟

适用场景:客户端无法连接互联网,服务端可以联网

思路:将百度地图的脚本下载成本地静态文件,修改其中的访问地址,修改代理配置

百度地图的加载规则是

1)先加载 api.map.baidu.com/api?v=2.0&a…

2)通过1)加载的脚本再加载 api.map.baidu.com/getscript?v…
步骤2)中的加载 的才是真正地图脚本,步骤1)只是引导。

如何修改脚本的中的访问地址

将步骤2)中的脚本下载到本地:

搜索:https

可以看到

B.s0 = {
'0': {proto: 'http://',domain: B.vY},

1: {proto: 'http://',domain: B.nM},

2: {proto: 'https://',domain: B.nM}

};

将proto改成如下

B.s0 = {

'0': {proto: location.origin + '/',domain: B.vY},

1: {proto: location.origin + '/',domain: B.nM},

2: {proto: location.origin + '/',domain: B.nM}

};

百度地图主要服务地址是下面几个:

https://api.map.baidu.com
https://maponline0.bdimg.com
https://maponline1.bdimg.com
https://maponline2.bdimg.com
https://maponline3.bdimg.com
https://gsp0.baidu.com

接下来修改nginx代理配置:

location /api.map.baidu.com/ {
        proxy_pass https://api.map.baidu.com/;
    }
  
    location /maponline0.bdimg.com/ {
        proxy_pass https://maponline0.bdimg.com/;
    }
  
    location /maponline1.bdimg.com/ {
        proxy_pass https://maponline1.bdimg.com/;
    }
            
    location /maponline2.bdimg.com/ {
        proxy_pass https://maponline2.bdimg.com/;
    }
            
    location /maponline3.bdimg.com/ {
        proxy_pass https://maponline3.bdimg.com/;
    }
            
    location /gsp0.baidu.com/ {
        proxy_pass https://gsp0.baidu.com/;
    }

最后,将1)2)步骤中的修改后的脚本做成本地引用就行了!

风险提示:百度脚本升级后可能导致地图不可用