2016-01-24 83 views
-3

我正在通過第三方API構建Web應用程序,他們要求我爲每個呼叫傳遞用戶IP和用戶代理。用戶IP和用戶代理

我更喜歡javascript(我正在使用Angular)或php,因爲我正在使用curl來處理請求。我可以爲此找到第三方腳本,但僅針對用戶IP而不是useragent。我更喜歡那種既能減少通話次數的功能。

任何人都可以幫助處理這個腳本或網站?

+0

當然...它被稱爲谷歌...和你應該在哪裏看第一個地方。詢問外部資源的問題在這裏是無關緊要的 – charlietfl

+0

Mate ...我搜索了谷歌,並回到了一個大圈子裏,沒有發現這就是爲什麼我問這個問題在這個嘗試有人可能會指向我正確的方向 – ottz0

+0

可以從''_SERVER'在PHP ..正確的轉儲 – charlietfl

回答

1

在PHP:

<?php 
    $userAgent = $_SERVER['HTTP_USER_AGENT']; 
    $ip = $_SERVER['REMOTE_ADDR']; 
?> 

我真的不知道PHP,這是谷歌搜索你的問題而造成的。請先嚐試做一些研究!

在JS:

var userAgent = window.navigator.userAgent; 
var req = new XMLHttpRequest(); 
req.onload = function() { 
    var ip = JSON.parse(req.response).ip; 
    //Use ip asynchronously here 
}; 
req.open("GET", "https://api.ipify.org/?format=json"); 
req.send(); 

獲取IP不在JS不可能的,除非你在濫用WebRTC技術的安全漏洞或查詢第三方服務,如這裏演示。知道ip不存在於req.onload之外並且因此在請求響應之前無法使用是很重要的。

如果您有機會獲得ES7(不可能的,但我會包括它的完整性),你可以用它來獲取用戶的IP:

(async() => { 
    var ip = (await fetch("https://api.ipify.org/?format=json").then(r => r.json())).ip; 
    //use ip 
})(); 

哪個更短,更有趣。


作爲一個側面說明,不應該有太多需要不斷獲得用戶的IP在客戶端,因爲你在JS做任何請求都將來自該客戶端來。這意味着無論服務器收到該請求,都能夠本地查看IP,而無需像這樣的黑客入侵。

我不確定爲什麼第三方API請求您傳遞客戶端IP,如果客戶端發出請求 - 聽起來像一個糟糕的API。