Como desativar a compactação de tráfego de um navegador no Linux?

0

Estou usando o selênio para desfazer um site em um servidor Linux sem exibição (Xvfb) usando o Debian 9 OS (Google Compute Engine). Mas o site retorna o seguinte corpo:

<html><head>
                    <title>name of website</title>
                    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
                    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                    <link rel="stylesheet" href="/static/css_interface.css" type="text/css" media="screen">
                    <link url="theme" rel="stylesheet" href="/static/css.theme?%23393939%40%233c6ae0%40rgba%2840%2C40%2C40%2C0.9%29%40%23292929%40%23f1f1f1%40%2354bb38%40%23cacf36%40%23cccccc%40%23a6a6a6" type="text/css" media="screen">
                    <link url="icons" rel="stylesheet" href="/static/icons.theme?width=800&amp;setup_8=1&amp;setup_9=1" type="text/css" media="screen">
                    <script type="text/javascript" async="" src="http://mc.yandex.ru/metrika/watch.js"></script><scripttype="text/javascript" src="/static/js/big.js"></script>
    </head>
            <body style="padding-top: 270px; text-align: center; color: rgb(255, 255, 255);">It seems that your browser is using traffic compression, please, turn it off in browser settings or use another one.</body></html>

Eu não entendo exatamente o que é a compactação de tráfego do navegador. Mas eu tentei seguir as coisas:

  1. usou a versão mais recente do Firefox e do Chrome
  2. Defina a codificação aceita do webdriver do firefox como string vazia.

    FirefoxProfile firefoxProfile = new FirefoxProfile();
    firefoxProfile.setPreference("browser.privatebrowsing.autostart",true);
    firefoxProfile.setPreference("network.http.accept-encoding", "");
    
    FirefoxOptions firefoxOptions = new FirefoxOptions();
    firefoxOptions.setProfile(firefoxProfile);
    
    driver = new FirefoxDriver(firefoxOptions);
    

Outros sites podem ser navegados corretamente, e o mesmo site funciona bem na minha própria estação de trabalho do Windows 10. Mas, retorna acima do corpo no linux.

    
por Glad Born 15.02.2018 / 16:05

1 resposta

0

Eu só posso tentar explicar o que significa compactação de tráfego:

A compactação de tráfego é usada para salvar o tráfego e deve acelerar o site um pouco. Um servidor da Web manipula solicitações recebendo cabeçalhos especiais para saber como manipular uma solicitação. Um usuário normal não precisa se preocupar com isso, porque o navegador vai lidar com isso para você, então você só precisa digitar o seu URL e ir em frente. Há um cabeçalho especial para ativar a compactação para compactar arquivos no servidor da Web e enviá-los compactados para o cliente. O cliente deve agora descomprimir esses arquivos para mostrá-los ao usuário.

Se você tiver o curl, teste-o com este comando:

curl -I -H "Accept-Encoding: gzip,deflate" http://www.google.com

Você deve obter uma saída com uma linha em algum lugar assim:

Content-Encoding: gzip

Se você vir isso, o tráfego é compactado e você precisa descompactá-lo primeiro. Se você remover o "-I" agora, você verá um monte de arte ASCII, mas nenhuma saída útil. Curl pode descompactá-lo com a opção "--compress".

Se você quiser desabilitar a compactação, precisará remover o cabeçalho dela. Neste exemplo, você só precisa remover o sinalizador -H e o cabeçalho

curl -I http://www.google.com

Agora, o "Content-Encoding" desaparece e você não usa a compactação. O Webserver lhe dará saída não compactada. Novamente, basta remover a opção -I e você verá o código do google.com

A maioria dos navegadores (CLI) envia o cabeçalho para usar as vantagens da compactação ...

Eu não sei selênio, mas pode haver uma opção semelhante para enviar cabeçalhos especiais ou você pode substituí-lo com curl? ;)

    
por 15.02.2018 / 16:29