2012-10-16 1 views
2

기존 응용 프로그램에 일부 JavaScript를 주입해야합니다. 기존 응용 프로그램에서 JavaScript를 "주입"하여 UI (qwebirc)를 조작하십시오.

애플리케이션

통상 이와 같은 iframe 매립되어

<html> 
<body> 
    <iframe src="http://webchat.quakenet.org/" width="647" height="400"></iframe> 
</body> 
</html> 

는 그것이 오픈 소스 자바 스크립트 기반 IRC 클라이언트 http://webchat.quakenet.org/ (source)이다.

는 지금은 예를 들어 특별한 메시지를 강조하기 위해 몇 가지 JS를 주입하는 것을 좋아합니다. 이를 위해 이미 HilighterClass을 재정의했습니다.

문제는 어떻게 할 수 있습니까? iFrame에 JS를 삽입하는 것이 최신 브라우저에서 허용되지 않습니까? iFrame이 문제가 될 경우에는

, 어쩌면 내가 그들처럼 클라이언트를 추가 할 수 있습니다

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <base /> 
    <title>QuakeNet Web IRC (qwebirc)</title> 
... 
    <script type="text/javascript"> 
    var ui = new qwebirc.ui.Interface("ircui", qwebirc.ui.QUI, {"appTitle":"QuakeNet Web  IRC","dynamicBaseURL":"/dynamic/leibniz/","baseURL":"http://webchat.quakenet.org/","validateNickname":false,"networkServices":["[email protected]"],"nickValidation": {"maxLen":15,"validSubChars":"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_[]{}`^\\|-","validFirstChar":"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_[]{}`^\\|","minLen":2},"staticBaseURL":"/static/leibniz/","loginRegex":"^You are now logged in as [^ ]+\\.$","networkName":"QuakeNet"}); 
    </script> 
</head> 
<body> 
    <div id="ircui"> 
    <noscript> 
     <div id="noscript">Javascript is required to use IRC.</div> 
    </noscript> 
    </div> 
</body> 
</html> 

요구 사항 :

  • 클라이언트는 quakenet.org 서버에 연결해야합니다. 이는 일부 교차 사이트 스크립팅 제한 때문에 문제가 될 수 있습니다.
  • 다른 사용자의 플러그인이 필요하지 않은 것이 가장 좋습니다.

답변

2

당신이 수 페이지에 자바 스크립트를 삽입 할 수 Privoxy 같은 프록시 서버. 불행히도 사용자는 Privoxy를 통해 모든 브라우징을해야하므로 옵션이 아닐 수도 있습니다.

또는 당신은 릴레이를하기 전에 자신의 역방향 프록시 (예를 들어, 오징어) 및 change the contents을 설정합니다. 원래 라이브러리 에 강조 표시 코드이 포함 된 자신의 라이브러리에 대한 호출로 JavaScript 라이브러리에 대한 요청을 바꿉니다. 내용을 주입 -

Ans By의 반드시 정확히 그렇게 할 수있는 브라우저 플러그인 인, Greasemonkey 들어.

+0

나는 Greasemonkey가 정말로 내가 가지고있는 유일한 옵션이라고 생각한다. ( – d0x

1

당신은 iframe의 내용을 조작 할 수 있습니다. 사이트 간 스크립팅은 여기에서 문제가되지 않습니다.

+0

그렇게 할 수있는 권한을 얻을 수있는 대안이 있습니까? – d0x

+0

나는 두렵다. –

0

주사를 가장 쉽게하려면 을 사용하고 the injection gatejs opcode을 사용할 수 있습니다.이 기능은 정방향 및 역방향 프록시에서 모두 작동합니다.

Gatejs 주입 형 HTML (text/html과)의 내용으로 당신에게 HTML 코드를 추가하려고합니다.

아래는 주사를 사용하는 포워드 프록시 예제입니다.

var serverConfig = function(bs) { return({ 
    hostname: "testServer0", 
    runDir: "/tmp/gatejs", 
    dataDir: "/path/to/dataDir", 
    logDir: "/var/log/gatejs", 

    http: { 
     testInterface: { 
      type: 'forward', 
      port: 8080, 
      pipeline: 'pipetest' 
     }, 
    }, 
    pipeline: { 
     pipetest: [ 
      ['injection', { 
       code: "<h1>w00t injection</h1>" 
      }], 
      ['proxyPass', { mode: 'host', timeout: 10 }] 
     ], 
    } 
})}; 

MK-

+0

나는 stackoverflow에 새로운 사람이다. 나는 단지 내가 한 짓을 깨닫는다. :) 다른 사람이 나에게 같은 발언을하게한다. –

관련 문제