Ich bin interessiert zu wissen, ob der Benutzer-Agent "Chrome" am Serverende mit PHP ist. Gibt es einen zuverlässigen regulären Ausdruck für das Parsing der User-Agent-Zeichenfolge aus dem Anforderungsheader?Wie erkennt man "Google Chrome" als User-Agent mit PHP?
Antwort
An dieser Stelle täuschen zu viele Browser vor, Chrome zu verwenden, um seine Popularität zu erhöhen und die Missbrauch der Browsererkennung für eine einfache Übereinstimmung zu bekämpfen, damit "Chrome" nicht mehr effektiv ist. Ich würde empfehlen, Feature-Erkennung für die Zukunft, aber Chrome (und WebKit/Blink im Allgemeinen) ist berüchtigt für Lügen mit Erkennungsmechanismen als auch, so dass auch das ist nicht so groß, wie es auch nicht mehr geknackt wird.
Ich kann nur empfehlen, immer auf dem neuesten Stand zu bleiben, indem ich seine bekannten UA-Strings mit denen anderer Browser über Websites von Drittanbietern vergleiche und Muster von dort her erstelle. Wie Sie das tun, hängt ganz von den Streichern ab. Bedenken Sie jedoch, dass aufgrund der Eigenschaften von Browsern und UA-Strings niemals ein "zuverlässiger" regulärer Ausdruck für deren Übereinstimmung vorhanden sein kann.
In PHP ist der relevante Server var $_SERVER['HTTP_USER_AGENT']
.
erwähnenswert, dass, wenn Sie auch enthalten Chrome für iOS wollen, müssen Sie auch gegen „Crios“ gefunden:
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'CriOS') !== false) {
// User agent is Google Chrome
}
Aufbauend auf @Adams Antwort, genauer Erkennung von Google Chrome durch einige ausschließen Browser mit "Chrome" in der User-Agent-String mit useragentstring.com und udger.com:
if(preg_match('/(Chrome|CriOS)\//i',$_SERVER['HTTP_USER_AGENT'])
&& !preg_match('/(Aviator|ChromePlus|coc_|Dragon|Edge|Flock|Iron|Kinza|Maxthon|MxNitro|Nichrome|OPR|Perk|Rockmelt|Seznam|Sleipnir|Spark|UBrowser|Vivaldi|WebExplorer|YaBrowser)/i',$_SERVER['HTTP_USER_AGENT'])){
// Browser might be Google Chrome
}
- 1. Wie erkennt man, ob ein mobiles Gerät von Google Chrome emuliert wird?
- 2. Wie aktiviert man Google Chrome Chrome: // Flags/Werte mit Javascript?
- 3. UserAgent in JSOUP?
- 4. Wie erkennt man ähnliche Bilder in PHP?
- 5. Wie aktiviert man WebVR in Google Chrome?
- 6. Wie erkennt man Geräteausrichtung mit JavaScript?
- 7. Wie ändert man SETTINGS_MAX_CONCURRENT_STREAMS auf Google Chrome?
- 8. Google Chrome Extensions: Wie erkennt man eine Kopieraktion (Strg-C und Bearbeiten-Kopieren)?
- 9. Wie erkennt man eine nicht verfügbare Datenbank mit PHP-PDO?
- 10. Wie erkennt man Internet Explorer und Firefox mit PHP?
- 11. Wie erkennt Google Adult-Inhalte mit Safesearch?
- 12. Ladeanzeige mit Google Chrome
- 13. Wie man window.open mit einer Symbolleiste in Google Chrome öffnet?
- 14. Wie testet man Google E2e Chrome Erweiterung mit Karma?
- 15. Profilprobleme mit google chrome
- 16. Google Chrome Extension-Integrationstest mit Chrome API
- 17. Wie erkennt man Google-Analytics und Facebook-Server-Anfragen?
- 18. Wie erkennt man, ob ein Tab in Chrome mit Javascript aktiviert ist oder nicht?
- 19. Google Chrome Extension Access-Token als Variable
- 20. Wie man Chrome Erweiterung mit Verwendung .dll
- 21. Marking Chrome Erweiterung als "arbeitet mit Google Drive"
- 22. Wie erkennt man Anwendungsabstürze?
- 23. Wie erkennt man, ob die Chrome-Sync-Funktion aktiv ist? - Chrome Extension
- 24. Wie man es6 Module erkennt
- 25. Wie öffne ich Google Chrome mit RSelenium?
- 26. UserAgent Erkennung in WML-Skript
- 27. Wie erkennt man eine E-Mail als Antwort, deren Betreffzeile sich in Google Mail geändert hat?
- 28. Wie erkennt man ungültige HTML-Entitäten in PHP?
- 29. Wie erkennt man veränderbare Objekte?
- 30. wie man android listview wie Android Google Chrome Registerkarte erstellen
Nice one. Die Verwendung von ** preg_match ** zur Erkennung von Chrome wäre sicherlich ein Overhead. –
Warum brauchen Sie das '! == false'? wäre nicht einfacher nur 'if (strpos ($ _ SERVER ['HTTP_USER_AGENT'], 'Chrome'))'? –
@Tuga: Wenn der String mit "Chrome" beginnt, gibt 'strpos()' 0 zurück. Da '0 == false', wird der if-Code nicht ausgeführt, aber Sie möchten es. Die Funktion gibt ein tatsächliches 'false' zurück, wenn die Zeichenkette nicht gefunden wird, also müssen Sie sie nach Typ mit '! == false' vergleichen. Deshalb ist deine Antwort auch falsch. – BoltClock