摘要:故事的經(jīng)過是這樣的有一天,產(chǎn)品同學(xué)突發(fā)奇想,他想獲取到下單用戶的地理位置分布,以便來統(tǒng)計用戶群的分布,進而為后期的按地區(qū)精確推廣活動來做準備。
大家好,我是冰茶,容我開場先講個故事。
故事的經(jīng)過是這樣的:
有一天,產(chǎn)品同學(xué)突發(fā)奇想,他想獲取到下單用戶的地理位置分布,以便來統(tǒng)計用戶群的分布,進而為后期的按地區(qū)精確推廣活動來做準備。
me:這個簡單啊,下單的時候,給個地理定位的請求,來獲取用戶所在位置就行啊,這樣的話還準確......
產(chǎn)品兄:這個方案需要考慮下,如果要是請求用戶的定位信息,首先呢,可能會引起用戶的反感,畢竟咱們這個產(chǎn)品,從頭到尾都沒有用到過定位,突然啪的一下來個彈窗,用戶肯定一是蒙逼,說你從頭到尾都沒有定位功能,要個定位權(quán)限有毛用,二是隱私意識強點,就直接拒絕掉了,這樣直接就拿不到信息,無法達到預(yù)設(shè)的效果了。其次呢,咱們能少打擾用戶,就少打擾用戶,有句話說,悄悄地進村,打槍的不要。就是說呢,讓用戶流暢的使用下來整個流程,讓用戶用的爽,一直是咱們的原則......
產(chǎn)品兄:我聽說有個IP定位,這東西蠻爽的,也不打擾用戶,再說IP這個東西,只要用戶訪問我們的服務(wù),絕對有這個東西能拿到,我們就拿他這個東西來反查下,這樣咱們要的省市信息就這樣到手了,而且這樣的成功幾率高,不用擔(dān)心用戶拒絕定位導(dǎo)致數(shù)據(jù)統(tǒng)計不全......
后端同學(xué):IP這個東西的確可以,但是呢,我們的服務(wù)都在負載均衡/反向代理服務(wù)后面,后端直接拿到的IP也是前端服務(wù)器的IP,而不是用戶直連我們前端服務(wù)器的IP,所以這個東西難辦啊~
后端同學(xué):想當初我們的項目還不是前后端分離的時候,的確是可以直接拿到IP的......
另外的前端同學(xué):嗯,我這邊也了解一些,我之前看到有前端獲取IP的方法:
//創(chuàng)建RTCPeerConnection接口 let conn = new RTCPeerConnection({ iceServers: [] }) let noop = function(){} conn.onicecandidate = function(ice){ if (ice.candidate){ //使用正則獲取ip let ip_regex = /([0-9]{1,3}(.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/ let ip_addr = ip_regex.exec(ice.candidate.candidate)[1]; console.log(ip_addr) conn.onicecandidate = noop } } //隨便創(chuàng)建一個叫狗的通道(channel) conn.createDataChannel("dog") //創(chuàng)建一個SDP協(xié)議請求 conn.createOffer(conn.setLocalDescription.bind(conn),noop) 作者:Illgo 鏈接:https://www.zhihu.com/question/20675353/answer/335325619 來源:知乎 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
之后用 WebRTC獲取IP 等關(guān)鍵詞找了幾篇類似的文章。這個比較全面。
獲取訪問者內(nèi)網(wǎng)IP
根據(jù)類似的文章,親自試驗了下,有兩個問題:
我們有微信站的業(yè)務(wù),在微信環(huán)境下獲取不到IP。這個方法在Chrome和Firefox下面很好用。
獲取的是用戶的內(nèi)網(wǎng)IP,用拿到的IP去反查,得到的結(jié)論是局域網(wǎng)地址。
這還查個毛線的查,于是......這個方案被放棄了......
me:在Google找了一些方案,大多數(shù)方案都是通過前端調(diào)取一個接口,接口返回地理定位等信息。和后端同學(xué)說的一致,只要用戶發(fā)請求,服務(wù)器能直接拿到用戶網(wǎng)絡(luò)出口的IP信息,然后咱們就調(diào)接口查一下就可以了。關(guān)于后端接口拿不到IP的問題,微信支付這邊有類似的解決方案。
備注:獲取用戶IP指引
me:咱們服務(wù)器相當于在代理后面,只要找運維去配置下,應(yīng)該就可以了。
后端同學(xué):這個可以考慮,稍后我這邊和運維聯(lián)系下,讓他們那邊配置下,把用戶請求代理服務(wù)器獲取到的IP傳遞給我這邊,這樣就可以了。
于是問題解決,大功告成~
開玩笑,要真是這樣的話,這篇文章就不會出現(xiàn)了
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://hztianpu.com/yun/96423.html
摘要:如果應(yīng)用程序不再需要接受有關(guān)用戶的持續(xù)位置更新,則只需調(diào)用函數(shù),如下所示表示一個唯一的監(jiān)視請求以便將來取消監(jiān)視。 GeolocationAPI學(xué)習(xí),我寫的挺枯燥的,直接跳到最后看示例。 5.1 位置信息 HTML5 Geolocation API的使用方法相當簡單。請求一個位置信息,如果用戶同意,瀏覽器就會返回位置信息,該位置信息是通過支持HTML5地理定位功能的底層設(shè)備(手機、筆記本...
摘要:二目的是一個經(jīng)策略性部署的整體系統(tǒng),從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小用戶訪問量大網(wǎng)點分布不均而產(chǎn)生的用戶訪問網(wǎng)站響應(yīng)速度慢的根本原因。 一、CDN全稱:??Content Delivery Network或Content Ddistribute Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。 ??二、目的:??CDN是一個經(jīng)策略性部署的整體系統(tǒng),從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小、用戶訪問量大、網(wǎng)點分布不...
閱讀 1663·2021-11-24 11:16
閱讀 2963·2021-07-28 12:32
閱讀 2462·2019-08-30 11:22
閱讀 1580·2019-08-30 11:01
閱讀 745·2019-08-29 16:24
閱讀 3686·2019-08-29 12:52
閱讀 1755·2019-08-29 12:15
閱讀 1468·2019-08-29 11:18