Pergunta

Como posso detectar qual navegador (IE, Firefox, Opera) o usuário está acessando meu site com? Exemplos em Javascript, PHP, ASP, Python, JSP, e quaisquer outros que você pode pensar que seria útil. Existe uma maneira independente de linguagem para obter essa informação?

Foi útil?

Solução

Se é para processar o pedido, veja o User- cabeçalho agente sobre a solicitação de entrada.

UPDATE: Se é para relatórios, configure seu servidor web para registrar o User-Agent nos logs de acesso, em seguida, executar uma ferramenta de análise de log, por exemplo, AWStats .

UPDATE 2:. FYI, é normalmente (nem sempre, geralmente) uma má idéia para mudar a maneira como você está lidando com um pedido baseado no User-Agent

Outras dicas

Você poderia dar uma olhada na User-Agent que eles estão enviando. Note que você pode enviar o que agente que você quer, então isso não é 100% infalível, mas a maioria das pessoas não mudá-lo a menos que haja uma razão específica para.

Um exemplo java servlet rápida e suja

private String getBrowserName(HttpServletRequest request) {
    // get the user Agent from request header
    String userAgent = request.getHeader(Constants.BROWSER_USER_AGENT);
    String BrowesrName = "";
    //check for Internet Explorer
    if (userAgent.indexOf("MSIE") > -1) {
        BrowesrName = Constants.BROWSER_NAME_IE;
    } else if (userAgent.indexOf(Constants.BROWSER_NAME_FIREFOX) > -1) {
        BrowesrName = Constants.BROWSER_NAME_MOZILLA_FIREFOX;
    } else if (userAgent.indexOf(Constants.BROWSER_NAME_OPERA) > -1) {
        BrowesrName = Constants.BROWSER_NAME_OPERA;
    } else if (userAgent.indexOf(Constants.BROWSER_NAME_SAFARI) > -1) {
        BrowesrName = Constants.BROWSER_NAME_SAFARI;
    } else if (userAgent.indexOf(Constants.BROWSER_NAME_NETSCAPE) > -1) {
        BrowesrName = Constants.BROWSER_NAME_NETSCAPE;
    } else {
        BrowesrName = "Undefined Browser";
    }
    //return the browser name
    return BrowesrName;
}

Você pode usar a classe HttpBrowserCapabilities em ASP.NET. Aqui está um exemplo deste ligação

private void Button1_Click(object sender, System.EventArgs e)
{
        HttpBrowserCapabilities bc;
        string s;
        bc = Request.Browser;
        s= "Browser Capabilities" + "\n";
        s += "Type = " + bc.Type + "\n";
        s += "Name = " + bc.Browser + "\n";
        s += "Version = " + bc.Version + "\n";
        s += "Major Version = " + bc.MajorVersion + "\n";
        s += "Minor Version = " + bc.MinorVersion + "\n";
        s += "Platform = " + bc.Platform + "\n";
        s += "Is Beta = " + bc.Beta + "\n";
        s += "Is Crawler = " + bc.Crawler + "\n";
        s += "Is AOL = " + bc.AOL + "\n";
        s += "Is Win16 = " + bc.Win16 + "\n";
        s += "Is Win32 = " + bc.Win32 + "\n";
        s += "Supports Frames = " + bc.Frames + "\n";
        s += "Supports Tables = " + bc.Tables + "\n";
        s += "Supports Cookies = " + bc.Cookies + "\n";
        s += "Supports VB Script = " + bc.VBScript + "\n";
        s += "Supports JavaScript = " + bc.JavaScript + "\n";
        s += "Supports Java Applets = " + bc.JavaApplets + "\n";
        s += "Supports ActiveX Controls = " + bc.ActiveXControls + "\n";
        TextBox1.Text = s;
}

predefinidos vetor superglobal $ _SERVER do PHP contém uma chave "HTTP_USER_AGENT", que contém o valor do cabeçalho User-Agent como enviado na solicitação HTTP. Lembre-se que este é dados fornecidos pelo usuário e não é para ser confiável. Poucos usuários alterar sua string user-agent, mas acontece de vez em quando.

No lado do cliente, você pode fazer isso em JavaScript usando o objeto navigation.userAgent. Aqui está um exemplo grosseiro:

if (navigator.userAgent.indexOf("MSIE") > -1) 
{
    alert("Internet Explorer!");
}
else if (navigator.userAgent.indexOf("Firefox") > -1)
{
    alert("Firefox!");
}

A mais detalhada e exemplo completa pode ser encontrada aqui: http://www.quirksmode.org/js/detect.html

Note que se você está fazendo a detecção do navegador por causa da compatibilidade Javascript, geralmente é melhor do que simplesmente a detecção de uso de objeto ou um bloco try / catch, para que alguma versão que você não pensa em escapar por entre as fendas de seu roteiro. Por exemplo, em vez de fazer isso ...

if(navigator.userAgent.indexOf("MSIE 6") > -1)
{
    objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
    objXMLHttp = new XMLHttpRequest();
}

... isto é melhor:

if(window.XMLHttpRequest) // Works in Firefox, Opera, and Safari, maybe latest IE?
{
    objXMLHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) // If the above fails, try the MSIE 6 method
{
    objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
}

Pode ser dependente da sua configuração. Com Apache no Linux, a sua escrita no log de acesso / var / log / apache2 / access_log

Você pode fazer isso por:
- olhando para o log do servidor web, OU
-. Olhando para o campo User-Agent na solicitação HTML (que é um fluxo de texto simples) antes de processá-lo

Em primeiro lugar, eu gostaria de nota, que é melhor evitar remendar contra web browsers específicos, a não ser como último -tentar resultado para conseguir a compatibilidade cross-browser em vez de usar compatível com o padrão HTML / CSS / JS (sim, javascript tem um subconjunto denominador comum, que trabalha em todos os principais navegadores).

Com isso dito, a tag user-agent do cabeçalho de solicitação HTTP contém navegador do cliente (reivindicada). Embora este tornou-se uma verdadeira bagunça devido a pessoas trabalhando contra navegador específico, e não a especificação, de modo a determinação do navegador real pode ser um pouco complicado.

Jogo contra esta:

contém navegador

Firefox -> Firefox

MSIE -> Internet Explorer

Opera -> Opera (um dos poucos navegadores, que não fingem ser Mozilla :))

A maioria dos agentes que contêm as palavras "bot", ou "rastreador" são geralmente bots (assim você pode omiti-lo a partir de logs / etc)

browsecap.ini . O site vinculado tem arquivos para várias linguagens de script. O browsecap não só identifica o usuário-agente, mas também tem informações sobre o suporte do navegador CSS, suporte JS, OS, se o seu navegador móvel etc.

cruzeiro até desta página para ver um exemplo do que informações o browsecap.ini pode informá-lo sobre o seu navegador atual.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top