Linux에서 브라우저 트래픽 압축을 끄는 방법은 무엇입니까?

Linux에서 브라우저 트래픽 압축을 끄는 방법은 무엇입니까?

저는 Debian 9 OS(Google Compute Engine)를 실행하는 디스플레이 없는(Xvfb) Linux 서버에서 웹사이트를 스크랩하기 위해 셀레늄을 사용하고 있습니다. 그러나 웹사이트는 다음 본문을 반환합니다.

<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><script type="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>

브라우저 트래픽 압축이 무엇인지 잘 모르겠습니다. 그러나 나는 다음을 시도했습니다.

  1. 최신 버전의 Firefox 및 Chrome을 사용하세요.
  2. Firefox 웹 드라이버의 허용되는 인코딩을 빈 문자열로 설정합니다.

    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);
    

다른 웹사이트도 정상적으로 열람이 가능하고, 동일한 웹사이트도 제가 소유한 Windows 10 워크스테이션에서 정상적으로 열람이 가능합니다. 그러나 Linux에서는 위의 본문을 반환합니다.

답변1

트래픽 압축이 무엇을 의미하는지 설명하려고 노력할 수 있습니다.

트래픽 압축은 트래픽을 절약하는 데 사용되며 웹 사이트 속도를 약간 향상시킵니다. 웹 서버는 요청을 처리하는 방법을 알기 위해 특수 헤더를 수신하여 요청을 처리합니다. 일반 사용자는 브라우저가 이를 처리하므로 걱정할 필요가 없으므로 URL만 입력하고 액세스하면 됩니다. 웹 서버의 파일을 압축하고 압축된 파일을 클라이언트에 보내기 위해 압축을 활성화하는 특수 헤더가 있습니다. 이제 클라이언트는 이러한 파일의 압축을 풀어 사용자에게 표시해야 합니다.

컬이 있는 경우 다음 명령을 사용하여 테스트할 수 있습니다.

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

다음과 같은 줄이 출력되어야 합니다.

Content-Encoding: gzip

이 메시지가 표시되면 트래픽이 압축된 것이므로 먼저 압축을 풀어야 합니다. 지금 "-I"를 제거하면 ASCII 아트가 많이 표시되지만 유용한 출력은 표시되지 않습니다. Curl은 "--compress" 옵션을 사용하여 압축을 풀 수 있습니다.

이제 압축을 비활성화하려면 해당 헤더를 제거해야 합니다. 이 예에서는 -H 플래그와 헤더만 제거합니다.

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

이제 "콘텐츠 인코딩"이 사라지고 압축을 사용하지 않습니다. 웹 서버는 압축되지 않은 출력을 제공합니다. 다시 한번 -I 옵션을 제거하면 google.com의 코드가 표시됩니다.

대부분의 (CLI) 브라우저는 압축을 활용하기 위해 헤더를 보냅니다...

셀레늄에 대해서는 잘 모르지만 특수 헤더를 보내는 비슷한 옵션이 있을 수도 있고 아니면 컬로 대체할 수도 있나요? ;)

관련 정보