최근 oneplusone 웹 사이트 https://account.oneplus.net/sign-up 에 가입했는데이 확인란이 표시됩니다.
어떻게 작동하며 내 사이트에서 어떻게 사용할 수 있습니까? 그 비밀스러운 단어 / 숫자보다 훨씬 낫습니다 🙂
recaptcha 사이트에는 새로운 recaptcha 방법이 언급되어 있지 않습니다 … https://www.google.com/recaptcha/intro/index.html
답변
reCAPTCHA 용 베타 API입니다. JS API 소스 인 https://www.google.com/recaptcha/api.js에서 ‘API2’를 참조 하여 수집합니다 . 그리고 나는 또한 이것을 발견했다 : http://jaswsinc.com/recaptcha-ads/ 분명히 그들은 그들의 “CAPPACHA reCAPTCHA”의 초대 전용 베타를 했으므로 .. 당신은 아마 그것을 작동시킬 수 없을 것입니다. 귀하의 사이트. 베타를 선택하는 방법에 대한 정보를 찾을 수 없지만 “No CAPTCHA reCAPTCHA beta”를 검색하면 Google에서 이메일을 수신하도록하는 사람들이 많이 있습니다.
베타에 들어갈 장소를 찾으면 공유하십시오! 그렇지 않으면 2015 년에 공개 버전이 출시 될 것 같습니다 …
답변
이 항목은 원래 질문에 대한 답변은 아니지만 유사한 솔루션을 구현하는 데 도움이됩니다. @IanM이 말했듯이 체크 박스 recaptcha는 베타 단계이며 초대 없이는 사용할 수 없습니다.
중요 편집 Google은 새로운 reCAPTCHA를 도입했습니다
이것은 JavaScript 기반 보안 문자입니다.
대부분의 스팸봇은 JavaScript를 실행하지 않으며 표시된 텍스트와 DOM 또는 필요한 조치 간의 상관 관계를 식별 할 수 없으므로 확인란을 클릭 할 수 없습니다.
확인란이 전혀 없으며 CSS 스타일이있는 div 요소 일뿐입니다. Spambots가 양식 입력 요소를 채우려 고하지만 보안 문자에 입력이 없습니다. 확인 표시는 또 다른 div (css 클래스)입니다.
상자를 클릭하면 ajax 요청이 서버에 div가 클릭되었음을 알리고 서버는이 정보를 임시 저장소에 저장합니다 (이 토큰은 사람에 의해 활성화되었습니다). 양식을 제출하면 숨겨진 필드가 활성화 된 토큰을 보낸 다음 서버가 양식 정보의 유효성을 검증하면 토큰이 활성화되었음을 인식합니다. 토큰이 활성화되지 않으면 양식이 무효화됩니다.
글 머리 기호의 단계 :
- 고유 식별자를 생성하고 숨겨진 입력으로 양식에 추가하십시오.
<input>
요소 를 사용하지 않고을 사용 하여 사이트에서 확인란을 렌더링<div>
하고 이전에 생성 된 식별자를 추가합니다 (html5data-*
속성을 사용할 수 있음 )- 사용자가 선택란을 클릭하면 서버에 아약스 요청을 보내고 보안 문자가 유효하다면로 표시하십시오
in use
. (결과를 보여주십시오-식별자는 OK / OK 아님-사용자에게) - 사용자가 양식을 보내면 양식의 데이터에 식별자가 포함됩니다. 다시 한 번 확인하십시오. 존재해야하며
in use
상태에 . - 모든 유효성 검사가 통과되면 양식의 데이터를 사용 / 처리 할 수 있습니다
식별자를 사용자 세션, IP 주소에 바인딩하거나 시간 제한을 사용하여 보안을 향상시킬 수 있습니다.
노트 이러한 종류의 보안 문자는 JavaScript가 활성화 된 경우에만 작동합니다!
노트 (편집 1) @crazypotato가 언급했듯이 JavaScript를 실행할 수있는 자동화 도구가 있습니다.이 도구는 적절한 AJAX 요청을 보내고 확인란 div에서 Click 이벤트를 발생시킬 수 있습니다.
참고 (편집 2) 특정 사이트에 쓰거나 한 유형의 보안 문자를 깨는 스크립트는 조만간 통과 할 수 있습니다. 궁극적 인 보호는 없으며 봇 (또는 개발자)의 노력만으로 만들 수 있습니다.
참고 (편집 3)이 답변의 단계와 설명에는 이러한 유형의 보안 문자에 대한 기본 정보 만 포함되어 있으므로 보안을 강화하기 위해 항상 유효성 검사 및 보안 단계를 추가해야합니다. 예를 들어 Google noCaptcha는 3 번의 “div 클릭”후에 체계적으로 표준 reCaptcha를 실행합니다.
답변
다음은 PHP에서 문제없이 실행되는 코드입니다.
고객 입장에서:
<div class="g-recaptcha" data-sitekey="PUBLIC_KEY"></div>
서버 측:
if (isset($_POST['g-recaptcha-response'])) {
$captcha = $_POST['g-recaptcha-response'];
$privatekey = "SECRET_KEY";
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = array(
'secret' => $privatekey,
'response' => $captcha,
'remoteip' => $_SERVER['REMOTE_ADDR']
);
$curlConfig = array(
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $data
);
$ch = curl_init();
curl_setopt_array($ch, $curlConfig);
$response = curl_exec($ch);
curl_close($ch);
}
$jsonResponse = json_decode($response);
if ($jsonResponse->success == "true")
doSomething();
else
doSomeOtherThing();
🙂
답변
나는 수색을 위해 여기에 왔고 답을 보지 못했고 계속 수색을했다.
검색 한 후에도이 창이 여전히 열려 있으므로이 게시물을 찾은 결과로 업데이트하고 있습니다.
reCAPTCHA에 대해 배울 수있는 곳은 다음과 같습니다 .
http://scraping.pro/no-captcha-recaptcha-challenge/
그러나 기본적으로 이것을 웹 페이지에 추가합니다.
<script src="https://www.google.com/recaptcha/api.js" >;
<form method="post">
<div class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
<input value="submit" type="submit" />
</form>
reCAPTCHA 키 를 얻으려면 다음 Google 사이트로 이동하십시오.
https://www.google.com/recaptcha/intro/index.html
위의 링크를 사용하여 키를 확보 한 후에는 다음 Google 정보를 사용하여이 코드를 자세히 살펴볼 수 있습니다.
https://developers.google.com/recaptcha/
노트:
Google 설명서에서 :
스크립트는 HTTPS 프로토콜을 사용하여로드해야하며 제한없이 페이지의 어느 지점에서나 포함 할 수 있습니다.
다음은 작동 방식의 예입니다.
<html>
<head>
<title>Contact</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
var onloadCallback = function () {
grecaptcha.render('dvCaptcha', {
'sitekey': '<%=ReCaptcha_Key %>',
'callback': function (response) {
$.ajax({
type: "POST",
url: "CS.aspx/VerifyCaptcha",
data: "{response: '" + response + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var captchaResponse = jQuery.parseJSON(r.d);
if (captchaResponse.success) {
$("[id*=txtCaptcha]").val(captchaResponse.success);
$("[id*=lblAlarm]").hide();
} else {
$("[id*=txtCaptcha]").val("");
$("[id*=lblAlarm]").show();
var error = captchaResponse["error-codes"][0];
$("[id*=lblAlarm]").html("RECaptcha error. " + error);
}
}
});
}
});
};
</script>
</head>
<body>
<form action="?" method="POST">
<div id="dvCaptcha" class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
<br />
<asp:Button ID="btnSubmit" runat="Server" Text="Send" OnClick="btnSubmit_Click" />
<asp:Label ID="lblAlarm" runat="server" ForeColor="Red"></asp:Label>
</form>
</body>
</html>
ASP.NET 코드 숨김에서 유효성을 검사해야하는 경우 “g-recaptcha-response”컨트롤이 채워져 있는지 확인하십시오.
protected static string ReCaptcha_Key, ReCaptcha_Secret;
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(Request.Form["g-recaptcha-response"]))
{
// other code
} else
{
lblAlarm.Text = "reCAPTCHA failed.";
}
}
바라건대, 여러분 중 일부는 이것이 유용하다고 생각합니다.
답변
이 글타래에 기여 해주셔서 감사합니다. 새로운 recaptcha 도구에 관심을 가진 많은 사람들을 만나게되어 기쁩니다.
.net 구현을 찾을 수 없으므로 간단한 웹 양식 컨트롤을 작성하여 https://github.com/pnmcosta/recaptchav2dotnet에서 찾을 수 있습니다.