你好有沒有檢查一個useragent檢測瀏覽器與JavaScript/PHP的方法?我試圖檢測非人類訪問者(套接字& CURL嘗試),可能僞造了一個useragent。檢測瀏覽器沒有檢查useragent
0
A
回答
1
不可靠,沒有。任何人都可以僞造實際的客戶。
行爲良好的機器人將使用自己的用戶代理。無論如何,你不應該關心那些表現不好的機器人。
0
同意用戶代理不可靠且容易被欺騙。但是,您可能可以構建一些JavaScript來使欺騙更難一些。它當然可以區分那些沒有JavaScript引擎的東西。看到我的答案在這裏:https://stackoverflow.com/a/12571513/399704
0
有不止是試圖用JavaScript或通過用戶代理字符串檢測它。
我做了一些研究,如何在僞造用戶代理字符串時識別瀏覽器。我發現許多瀏覽器(有時幾乎沒有版本差異,有時與大的差異)以不同的順序發送不同的標題信息。通常,通過檢測標題信息發送到服務器的順序,可以區分所有大型瀏覽器(Firefox,IE,Chrome,...)。儘管這一切都可以被欺騙。
欲瞭解更多信息,請閱讀這裏:http://hide.network/why-does-changing-your-user-agent-almost-come-to-nothing/
這是一個有點棘手檢測,但有可能。在PHP中,您可以簡單地使用函數getallheaders()來完成此任務。正如我測試的那樣,它會爲您提供與瀏覽器發送相同的標題信息順序。你只需要檢測每個鍵的實際索引。
<?php
foreach (getallheaders() as $name => $value)
{
echo "$name: $value<br />\n";
}
?>
編輯:
我寫了一個腳本來檢測PHP一些主要的瀏覽器。起初,我忘記了將通過單擊頁面鏈接發送的引用者。我在列表中添加了IE和FF引用標頭,也許這對任何事情都有幫助。我還將腳本上傳到了hide.network/header.php,但不能發佈兩個以上的鏈接。
<?php
$headerInformation = array();
// declaring and filling pre-defined header orders of browsers
$browserInformation = array
(
"browserNames" => array
(
"Mozilla Firefox 37.0",
"Mozilla Firefox 37.0 with referer",
"Internet Explorer 11",
"Internet Explorer 11 with referer",
"Internet Explorer 8",
"Google Chrome 42",
"SRWare Iron 37"
),
"headerInformation" => array
(
array("host", "user-agent", "accept", "accept-language", "accept-encoding", "connection", "cache-control"),
array("host", "user-agent", "accept", "accept-language", "accept-encoding", "referer", "connection", "cache-control"),
array("accept", "accept-language", "user-agent", "accept-encoding", "host", "dnt", "connection"),
array("accept", "referer", "accept-language", "user-agent", "accept-encoding", "host", "dnt", "connection"),
array("accept", "accept-language", "user-agent", "accept-encoding", "host", "connection"),
array("host", "connection", "cache-control", "accept", "user-agent", "accept-encoding", "accept-language"),
array("host", "connection", "accept", "user-agent", "accept-encoding", "accept-language")
),
"identScore" => array(0, 0, 0, 0, 0)
);
// parsing all header values
foreach (getallheaders() as $name => $value)
{
array_push($headerInformation, strtolower($name));
}
// calculating possibility for each browser
for($i = 0; $i < count(10); $i++)
{
for($j = 0; $j < count($browserInformation["browserNames"]); $j++)
{
$currentPossibility = count(array_intersect_assoc($browserInformation["headerInformation"][$j], $headerInformation))/count($headerInformation) * 100;
$currentPossibility = round($currentPossibility, 2);
$browserInformation["identScore"][$j] = $currentPossibility;
}
}
// sort array
array_multisort($browserInformation["identScore"], SORT_DESC, SORT_NUMERIC,
$browserInformation["browserNames"], $browserInformation["headerInformation"]);
// output
for($i = 0; $i < count(10); $i++)
{
for($j = 0; $j < count($browserInformation["browserNames"]); $j++)
{
echo "possibility " . $browserInformation["browserNames"][$j] . ": " . $browserInformation["identScore"][$j] . " %<br />";
}
}
// output original sent header
echo "<pre>";
var_dump($headerInformation);
echo "</pre>";
?>
相關問題
- 1. 瀏覽器檢測
- 2. 瀏覽器檢測
- 3. 瀏覽器檢測
- 4. 檢測寬度vs檢測瀏覽器
- 5. 瀏覽器檢測與功能檢測
- 6. 移動瀏覽器檢測查看
- 7. 檢測AOL瀏覽器
- 8. 檢測點擊瀏覽器
- 9. 瀏覽器版本檢測
- 10. 檢測Xoom瀏覽器(Android)
- 11. 設備瀏覽器檢測
- 12. 瀏覽器檢測插件?
- 13. 瀏覽器插件檢測
- 14. 瀏覽器檢測jQuery的?
- 15. 瀏覽器檢測問題
- 16. 現代瀏覽器檢測?
- 17. 檢測瀏覽器URL
- 18. Nodejs檢測瀏覽器pushState
- 19. 瀏覽器檢測給我
- 20. 檢測瀏覽器加載
- 21. jQuery瀏覽器檢測?
- 22. JavaScript瀏覽器檢測?
- 23. jQuery 1.6瀏覽器檢測
- 24. 檢測手機瀏覽器
- 25. php來檢測瀏覽器
- 26. Safari瀏覽器檢測7
- 27. 檢測瀏覽器autoclick
- 28. 如何檢測瀏覽器?
- 29. Javascript/jQuery瀏覽器檢測
- 30. 瀏覽器檢測Python/mod_python?