我想将浏览器位置更改为美国请帮助我更改firefox位置,即测试地理位置。
答案 0 :(得分:8)
nmaler提到的两个首选项是定点。此外,您不需要(本地)服务器,数据:-URI也可以正常工作。
例如,如果您将偏好geo.wifi.uri
(about:config
)设置为值:
data:,{"location":{"lat":1.2,"lng":3.4},"accuracy":4000}
然后通过从JS控制台运行以下命令进行测试:
navigator.geolocation.getCurrentPosition(pos => console.log(pos.coords));
然后你会看到恶搞成功了:
Coordinates { latitude: 1.3, longitude: 11, altitude: 0, accuracy: 4000, ... }
如果您需要使用JavaScript生成有效数据:-URL(例如在附加代码中),请使用以下内容。请注意,我使用encodeURIComponent
以防pos
对象以某种方式包含特殊字符,例如%
或#
(这不太可能,但比抱歉更安全):
var pos = {
location: {
lat: 1.2,
lng: 3.4,
},
accuracy: 4000,
};
var geoWifiUrl = `data:,${encodeURIComponent(JSON.stringify(pos))}`;
// TODO: Set geo.wifi.url's pref to geoWifiUrl.
答案 1 :(得分:7)
最简单的方法是设置自己的地理定位模拟服务器并更改一些首选项:
geo.provider.testing
,将其设置为true
。这将强制网络提供商(而不是操作系统级别的地理位置提供商,如果有的话)。geo.wifi.uri
更改为模拟服务器的URI,例如http://localhost:8888/
您可以在about:config
中更改偏好设置,也可以直接修改浏览器配置文件的prefs.js
文件。打开配置文件目录的最简单方法是使用about:support
中的相应按钮。
python2中的示例模拟服务器(总是返回白宫的坐标):
import json
import BaseHTTPServer
import SocketServer
PORT = 8888
LAT, LNG = 38.894967, -77.034917
class GeoHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "application/json")
self.end_headers()
self.wfile.write(json.dumps({
"location": {
"lat": LAT,
"lng": LNG
},
"accuracy": 4000
}))
def do_POST(self):
return self.do_GET()
httpd = SocketServer.TCPServer(("", PORT), GeoHandler)
print "serving at port
答案 2 :(得分:2)
如果您想为HTML5 Geolocation API欺骗自己的位置,可以按照以下步骤操作:
about:config
。geo.wifi.uri
。将值更改为以下内容:
data:application/json,{"location": {"lat": 40.7590, "lng": -73.9845}, "accuracy": 27000.0}
(lat
和lng
值确定您所在位置的纬度和经度。)
请注意,如果要阻止网站从IP地址获取位置,则不能在应用程序层上这样做-唯一的方法是代理。