2010-06-15 9 views

Antwort

27

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'].

+1

Nice one. Die Verwendung von ** preg_match ** zur Erkennung von Chrome wäre sicherlich ein Overhead. –

+0

Warum brauchen Sie das '! == false'? wäre nicht einfacher nur 'if (strpos ($ _ SERVER ['HTTP_USER_AGENT'], 'Chrome'))'? –

+7

@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

16

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 
} 
5

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 
} 
Verwandte Themen