트래픽 소스 기능은 트래픽 통계 서비스에서 사용할 수 있습니다. 트래픽 소스는 방문 수준의 개념입니다. 다시 말해, 방문이 설정되면 방문 페이지의 트래픽 소스는 방문의 트래픽 소스입니다. 불행히도 JS를 기반으로하는 트래픽 소스에는 여러 유형이 있지만 트래픽 소스를 얻는 방법은 두 가지뿐입니다. Document.referrer 및 Window.opener. 더 불행한 점은 Window. Opener가 적합한 시나리오가 많지 않다는 것입니다. 레퍼러가 너무 약해서 많은 시나리오에서 트래픽 소스를 정확하게 결정하는 것이 불가능합니다.
Document.referrer의 개요
사용 측면에서 문서는 브라우저 동작을 추적하기를 희망합니다. 페이지 A가 열리면 브라우저에서 발생할 수있는 작업에는 사용자 작업 및 JS 코드가 포함됩니다.
먼저 페이지를 열 때 사용자가 수행 할 수있는 작업을 살펴 보겠습니다.
| 1 | 주소 표시 줄에 직접 A의 주소를 입력하십시오. |
| 2 | 왼쪽을 클릭하여 A 페이지에서 링크를 클릭하고 페이지로 점프합니다. |
| 3 | 새 창에서 링크 A에서 링크를 마우스 오른쪽 버튼으로 클릭하십시오. |
| 4 | 페이지 B에서 A를 마우스 오른쪽 버튼으로 클릭하고 새 탭에서 엽니 다. |
| 5 | 링크 A를 주소 막대로 끌어냅니다 |
| 6 | 링크 A를 탭 막대로 끌어냅니다 |
| 7 | 브라우저의 전방 및 뒤로 버튼을 사용하십시오 |
여기서 링크는 <a> 태그를 나타냅니다. 그러나 이벤트 나 대상이있는 경우 다른 문제 여야합니다.
JS에 의해 페이지를 열 수있는 가능한 방법 :
| 1 | Window.location을 수정하십시오 |
| 2 | Window.open을 사용하십시오 |
| 3 | 플래시를 클릭하십시오 |
위에는 클라이언트가 페이지를 열 수있는 몇 가지 방법이 나와 있습니다. 또한 서버 리디렉션 기술을 사용하는 경우 페이지 A를 방문자에게 제시 할 수도 있습니다.
다음은 특정 브라우저 테스트입니다. 위의 상황이 위의 상황 인 경우 문서를 어떻게 수행합니까?
| 일련 번호 | 장면 | IE8.0 | FF3.6 | FF4.0 | 크롬 |
| 1 | 주소 표시 줄에 직접 A의 주소를 입력하십시오. | "" " | "" " | "" " | "" " |
| 2 | 왼쪽을 클릭하여 A 페이지에서 A를 링크하고 페이지 A 교체 페이지 B (Target = '_ Self')를 교체합니다. | √ | √ | √ | √ |
| 3 | 왼쪽을 클릭하여 A 페이지 B에서 A, A가 새 창에서 열립니다 (Target = '_ blank') | √ | √ | √ | √ |
| 3 | 새 창에서 링크 A에서 링크를 마우스 오른쪽 버튼으로 클릭하십시오. | √ | √ | √ | "" " |
| 4 | 페이지 B에서 A를 마우스 오른쪽 버튼으로 클릭하고 새 탭에서 엽니 다. | √ | √ | √ | "" " |
| 5 | 마우스와 함께 주소 표시 줄로 링크를 드래그하십시오. | / | "" " | "" " | "" " |
| 6 | 마우스 드래그 a를 탭 막대에 링크합니다 | "" " | "" " | "" " | "" " |
| 7 | 브라우저의 전방 및 뒤로 버튼을 사용하십시오 | 유지하다 | 유지하다 | 유지하다 | 유지하다 |
| 8 | window.location a inpen page a (동일한 도메인) | "" " | √ | √ | √ |
| 9 | Window.open을 사용하여 페이지를 열십시오 | "" " | √ | √ | √ |
| 10 | 페이지를 열려면 플래시를 클릭하십시오 | ||||
| 11 | 서버는 페이지 a로 리디렉션됩니다 | "" " | "" " | "" " | "" " |
""가 빈 문자열을 의미하는 경우 √는 소스 페이지를 올바르게 판단 할 수 있음을 의미하며, 앞뒤로 변경되지 않을 때 페이지가 변경되지 않는 참조자가 변경되지 않음을 의미합니다. 이 표에서 해당 문서를 볼 수 있습니다 .referrer는 사례의 약 절반을 다룰 수 있습니다. 그러나 마우스와 함께 탭 바에 링크를 드래그, 앞뒤로 이동 등과 같은보다 일반적으로 사용되는 작업의 경우 올바르게 처리 할 수 없습니다.
문서의 출처 .referrer
브라우저가 서버에서 페이지 A를 요청하면 HTTP 요청이 보냅니다. 이 요청의 헤더에는 참조 속성이 있습니다. 서버가 요청을 수신 한 후에는 헤더에서 참조자를 추출하여 방문자가 요청을 시작한 페이지를 결정할 수 있습니다.
일반적으로, A를 요청할 때 브라우저에서 보낸 헤더의 참조자는 무엇입니까? 문서의 값은 무엇입니까?
헤더에 referre가 포함되어 있지 않으면 Document.Referre를 사용할 때는 빈 문자열로 할당됩니다.
HTTPS 요청에 대해
일반 HTTP 페이지에서 HTTPS 링크를 클릭하면 HTTPS 요청 헤더에 참조 정보를 첨부 한 다음 HTTPS 페이지에서 일반 HTTP 페이지를 얻으려면 문서를 사용할 수 있습니다.
마찬가지로 하나의 HTTPS 페이지에서 다른 HTTPS 링크를 클릭하면 요청의 헤더에 참조 정보를 첨부 할 수 있습니다.
그러나 HTTP 페이지에서 HTTP 링크를 클릭하면 불행히도 전송 된 HTTP 요청 헤더에는 HTTP 페이지에 대한 정보가 포함될 수 없으며, 이는 HTTP 페이지의 보호 조치로 인한 것일 수 있습니다.
위조 된 참조 정보
위의 설명에 따르면, 문서는 헤더의 참조 자에서 파생됩니다. 그런 다음 Document.referre의 값을 수정하려면 요청 헤더 만 수정하면됩니다. 헤더의 기존 참조기를 원하는 값으로 바꿀 수 있습니다. 원래 사용할 수없는 경우 참조자를 추가 할 수 있습니다.
클라이언트 측에서 헤더를 조작하는 것은 매우 쉬운 일입니다. 페이지의 HTTP 요청이 전송되기 전에 패킷 인터셉터 도구를 사용하여 차단 한 다음 헤더 정보를 분석 한 다음 참조를 수정할 수 있습니다.
검색 후 RefControl 플러그인을 사용하여 Firefox를 쉽게 수정할 수 있습니다. 어쨌든, 교통 소스에 대한 속임수는 산들 바람입니다.
Page Force 새로 고침
글쓰기를 마친 직후, 점프 페이지가 빠졌다는 것을 알았습니다. 예를 들어 B.html로 작성하십시오
코드 코드를 다음과 같이 복사하십시오. <meta http-equiv = "refresh"content = "5; url = a.html">
그런 다음 5 초 후에 브라우저는 서버에 대한 페이지 요청을 자동으로 시작합니다.
테스트 후 IE8, FF3.6-FF.40에서는 참조 정보가 없지만 Chrome은 B.html을 실수로 헤더에 추가 할 수 있습니다.