2012-05-07 5 views
5

reCAPTCHA 로봇을 걸러내는 웹 양식이 있습니다. 이 양식에는 에 보안 문자 챌린지를로드하는 <script> 태그가 있습니다. 이 스크립트가로드되지 않으면 captcha 챌린지가 나타나지 않고 어느 누구도 글을 보낼 수 없습니다.외부 자바 스크립트 파일이 완전히로드되었는지 여부를 감지하는 방법이 있습니까?

내 측면에서이 기능을 끌 수 있도록 스크립트가로드되었는지 감지 할 수있는 방법이 있습니까?

+0

필요,하지만 난 당신이 우회 작동 얼마나 정교한 빠른 솔루션 – wizztjh

답변

6

load 이벤트를 reCAPTCHA를 가리키는 script 요소에 연결하십시오.

var script = document.createElement("script"); 

script.addEventListener("load", function() { 
    // Script has loaded. 
}); 

script.src = "/path/to/recaptcha.js"; 

document.body.appendChild(script); 
+0

당신은 당신의 대답에 정성 들여주세요. 감사. –

2

당신은 아마 그 탐지를 할 수있는 방법을 발견 할 수 있지만, captcha의 목적을 무효로하는 것은 추천하지 않습니다. 컴퓨터/로봇이 스크립트를 쉽게로드하지 못하게 할 수 있습니다. 호스트 파일 항목은 트릭을 수행합니다.

로드하는 데 실패한 사례에 대한 처리를 실행하여 captcha를 우회하는 스크립트를 만들 수도 있습니다.

+0

을 찾고있는 것 같아? 감사. –

+0

@BenHuh captcha가 필요하지 않은 경우 (로드에 실패했기 때문에) 서버에 알려주는 코드가있는 경우 captcha가로드되었는지 여부에 관계없이 누구나 해당 코드를 실행하는 스크립트를 작성할 수 있습니다. 그러면 captcha는 더 이상 필요 없으며 사용자는 양식을 악용하려는 경우 해당 변경 사항을 모든 봇에 추가 할 수 있습니다. – Paulpro

+0

오, 예, 자바 스크립트가 서버 측이 아니라 클라이언트 측에서 실행되기 때문입니다. 나는 너에게 동의한다. 감사합니다 :) –

1

script.addEventListener는 IE8 및 IE7에서 작동하지 않습니다. 그것에 대해 내가 당신을 http://requirejs.org/를 사용하는 것이 좋습니다 것입니다

if (!script.addEventListener) { 
     script.attachEvent("onload", function(){ 
     // script has loaded in IE 7 and 8 as well. 
}); 
    } 
    else 
    { 
    script.addEventListener("load", function() { 
     // Script has loaded. 
    }); 
} 
관련 문제