2013-09-26 2 views
1

<browser> 태그를 사용하여 만든 브라우저 인스턴스 내부에서 일어나는 모든 네트워크 통신을 기록하는 XUL 애플리케이션을 작성하고 있습니다.플러그인 HTTP 요청과 JavaScript HTTP 요청을 구별합니다.

http-on-modify-request를 사용하여 모든 요청을 추적하고 그에 따라 헤더를 수정할 수 있지만 Flash와 같은 플러그인이나 JavaScript로 만들어진 요청을 구분할 수는 없습니다.

이러한 요청을 구분할 수있는 방법이 있습니까?

답변

1

경고, 불쾌한 해킹이 들어옵니다!

Flash vs Javascript에 대한 요청은 실제로 동일한 Mozilla 플랫폼 API를 사용하므로 분명히 구분할 수 없습니다. 당신은 모든 비 플래시 requets 다른 보이게하기 위해 뭔가를 할 필요가 - http-on-modify-request 구현에서 조사 할 때

그러나, 비 플래시 요청을 당신에게 을 중지 아무것도 다른 보인다.

제가 생각할 수있는 가장 쉬운 방법은 QueryString 매개 변수를 추가 한 다음 (사용자의 http-on-modify-request 처리기 내부에서 제거하는 것입니다)

기본적으로 각 요청 URI에 ?___NONFLASH__=897123487 또는 &___NONFLASH__=897123487과 같은 것을 추가하십시오. (어디에서 초기화 할 때 무작위로 토큰 897123487을 생성하므로이 샌드 박스에서 '탈출'하려고하는 JavaScript/Flash로 추측 할 수 없습니다).

당신은 브라우저의 content.contentDocument에 다음과 같은 영향을해야 할 것 :

  • 링크 - 변경 그들의 href
  • 형태의 속성 - 자신의 action
  • window.XMLHttpRequest 속성 변경 - 자신의 결정의 버전이 교체 (만들기 어떤 클라이언트 스크립트가 실행되기 전에 당신이 그것을 대체해야합니다!) 단지 클라이언트 window 스크립트 실행 잎

NA는 -Level (예 : window.location.href 변경). NSIObserver 또는 NSIProgressListener을 사용하여 변경/다시로드하는 URL을 볼 수 있습니다.

편집 :이 모든 내용은 플래시 콘텐츠가 플래시 < -> JavaScript 브리지를 사용하지 않고 JavaScript 측에서 모든 요청을 수행하고 있다고 가정합니다 (가능하지는 않지만 가능합니다).

관련 문제