iOS IP的獲取

什么是IP

IP是Internet Protocol(網(wǎng)際互連協(xié)議)的縮寫,是TCP/IP體系中的網(wǎng)絡層協(xié)議。對上可載送傳輸層各種協(xié)議的信息紊搪,例如TCP、UDP等全景;對下可將IP信息包放到鏈路層耀石,通過以太網(wǎng)、令牌環(huán)網(wǎng)絡等各種技術來傳送

IP地址是IP協(xié)議提供的一種統(tǒng)一的地址格式蚪燕,它為互聯(lián)網(wǎng)上的每一個網(wǎng)絡和每一臺主機分配一個邏輯地址娶牌,以此來屏蔽物理地址的差異奔浅。
IP規(guī)定網(wǎng)絡上所有的設備都必須有一個獨一無二的IP地址馆纳,就好比是郵件上都必須注明收件人地址。但是一臺設備理論上可以有多個IP地址汹桦。

IP地址:IP地址是一個32位的二進制數(shù)鲁驶,通常被分割為4個“8位二進制數(shù)”(也就是4個字節(jié))。IP地址通常用“點分十進制”表示成(a.b.c.d)的形式舞骆,其中钥弯,a,b,c,d都是0~255之間的十進制整數(shù)。

獲取IP的幾種方式
一督禽、請求第三方獲取

http://119.29.29.29/d?dn=www.baidu.com&ttl=1脆霎,講www.baidu.com換成其他域名,即可請求獲取到該域名的ip地址狈惫。

我們可以看到睛蛛,百度不只有一個ip,這是CDN的關系(自己下去查)

二胧谈、根據(jù)私有API獲取

(筆者只考慮了iOS11以上的版本)
_timingData私有屬性忆肾,分別可以從NSURLConnection和NSURLSessionTask對象中獲取,(NSURLConnection 需要iOS12的版本支持)
需要注意的是菱肖,私有API有被拒審的風險客冈,慎用~要做一些特殊處理,比如通過runtime的方式執(zhí)行獲取稳强,或者對_timingData進行encode處理過機審场仲。

iOS 13以上和悦,NSURLSessionTask可以通過task的代理直接獲取,光明正大的拿到ip地址渠缕。
NSURLSessionTaskTransactionMetrics.remoteAddress

優(yōu)勢:這種方式有一個極大的好處摹闽,就是和本次請求綁定在一次,不需要增加請求的次數(shù)褐健,給APP增加流量上的負擔付鹿。
劣勢:如果用戶有連接代理,則會拿到代理的ip蚜迅,這對我們統(tǒng)計來說是沒有意義的蛤肌。

三顶伞、ping值獲取

(需要一次極小的請求,直接獲取到當前請求遠端ip,但是可能會有一些偏差旅挤,因為ping相當于一次請求,和真實的請求IP可能會存在偏差)

獲取時長約為35ms(和網(wǎng)絡環(huán)境正相關闯狱,very bad的網(wǎng)絡可能會達到1秒以上)
具體方案參考如下:
https://kangzubin.com/apple-sample-code-simpleping/
https://learnku.com/articles/23788

蘋果ping的地址:https://developer.apple.com/library/archive/samplecode/SimplePing/Listings/Common_SimplePing_m.html#//apple_ref/doc/uid/DTS10000716-Common_SimplePing_m-DontLinkElementID_4

最終方案:

先判斷是否有代理票堵,https://blog.csdn.net/potato512/article/details/88692127
判斷是否有代理,第一次約為5ms偷溺,之后為0.02ms蹋辅。切換代理狀態(tài)時,也會增加時長為毫米級(2ms左右)
如果存在代理挫掏,使用ping工具獲日炝怼;如果不存在尉共,使用私有API

IP存在獲取不到的情況褒傅,注意判空

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市袄友,隨后出現(xiàn)的幾起案子殿托,更是在濱河造成了極大的恐慌,老刑警劉巖剧蚣,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件支竹,死亡現(xiàn)場離奇詭異,居然都是意外死亡券敌,警方通過查閱死者的電腦和手機唾戚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來待诅,“玉大人叹坦,你說我怎么就攤上這事”把悖” “怎么了募书?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵绪囱,是天一觀的道長。 經(jīng)常有香客問我莹捡,道長鬼吵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任篮赢,我火速辦了婚禮齿椅,結果婚禮上,老公的妹妹穿的比我還像新娘启泣。我一直安慰自己涣脚,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布寥茫。 她就那樣靜靜地躺著遣蚀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纱耻。 梳的紋絲不亂的頭發(fā)上芭梯,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音弄喘,去河邊找鬼玖喘。 笑死,一個胖子當著我的面吹牛限次,可吹牛的內(nèi)容都是我干的芒涡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼卖漫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赠群?” 一聲冷哼從身側響起羊始,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎查描,沒想到半個月后突委,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡冬三,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年匀油,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勾笆。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡敌蚜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窝爪,到底是詐尸還是另有隱情弛车,我是刑警寧澤齐媒,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站纷跛,受9級特大地震影響喻括,放射性物質發(fā)生泄漏。R本人自食惡果不足惜贫奠,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一唬血、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唤崭,春花似錦刁品、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至勒叠,卻和暖如春兜挨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背眯分。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工拌汇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人弊决。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓噪舀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親飘诗。 傳聞我的和親對象是個殘疾皇子与倡,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360