ใช้ reCAPTCHA บน localhost


286

ฉันกำลังพัฒนาเว็บไซต์โดยใช้ PHP และฉันต้องการยืนยันตัวบุคคลในช่วงเวลาใดช่วงหนึ่ง สำหรับการพัฒนาฉันเริ่มใช้ระบบภายในเครื่องและเมื่อพร้อมฉันจะเปิดใช้งานในบางโดเมน

ในเว็บไซต์ reCAPTCHAมีการกล่าวว่าปลั๊กอินจะทำงานเฉพาะในโดเมนที่กำหนด (และโดเมนย่อย)

คำถามของฉันคือ: มีวิธีใช้ปลั๊กอิน reCAPTCHA บน localhost หรือไม่?


ล้างคุกกี้หากคุณเพิ่ม localhost หลังจากข้อเท็จจริง
Mike Flynn

3
ในรายการโดเมนเพียงพิมพ์localhost
csandreas1

คำตอบ:


357

ปรับปรุง

คำตอบเดิมไม่ถูกต้องอีกต่อไป คู่มือนักพัฒนาระบุว่า:

"หากคุณต้องการใช้" localhost "เพื่อการพัฒนาคุณจะต้องเพิ่มลงในรายการโดเมน"

นี้จะทำงานหากคุณเข้าถึง localhost ใช้มากกว่า127.0.0.1/...localhost/...

คำตอบเดิมจะถูกเก็บไว้ด้านล่าง


ตามคำแนะนำของนักพัฒนา reCAPTCHA :

"โดเมน localhost ไม่ได้รับการสนับสนุนอีกต่อไปหากคุณต้องการสนับสนุนพวกเขาเพื่อการพัฒนาต่อไปคุณสามารถเพิ่มโดเมนเหล่านั้นในรายการโดเมนที่รองรับสำหรับคีย์ไซต์ของคุณไปที่คอนโซลผู้ดูแลระบบเพื่ออัปเดตรายการโดเมนที่สนับสนุน ใช้คีย์แยกต่างหากสำหรับการพัฒนาและการผลิตและไม่อนุญาต localhost ในคีย์ไซต์การผลิตของคุณ "

พูดง่ายๆก็คือใช้รหัสเดียวกัน


8
ฉันตรวจสอบเพื่อยืนยันว่าคำนั้นอยู่ในหน้านั้นหรือไม่ มันหายไปแล้ว! ในปี 2015 คุณสามารถค้นหาใบเสนอราคาด้านบน @ developers.google.com/recaptcha/docs/start
Joshua Plicque

11
คำตอบนี้ถูกต้อง แต่มีข้อแม้สำคัญที่ทำให้ฉัน: เมื่อโยกย้ายจาก reCAPTCHA v1 เป็น v2 จำเป็นต้องสร้างคีย์ API ใหม่เพื่อให้ข้อความนี้หายไป เพิ่มเติมและที่สำคัญไม่แพ้กันหากคุณเป็นเหมือนฉันและคุณตั้งค่าการทดสอบโดเมนในสภาพแวดล้อมท้องถิ่น / การพัฒนาของคุณโดยการใส่รายการลงในไฟล์ "โฮสต์" ของระบบปฏิบัติการคุณจะต้องเพิ่มโดเมน "ปลอม" เหล่านั้นไปยังโดเมนที่อนุญาต บัญชี reCAPTCHA ที่เป็นปัญหาเพื่อแก้ไขข้อผิดพลาด "ข้อผิดพลาด: โดเมนไม่ถูกต้องสำหรับรหัสไซต์"
Ben Johnson

5
เมื่อ localhost ของคุณไม่มีชื่อ "localhost" แสดงว่าไม่ทำงาน
Hexodus

12
Google ดูเหมือนจะลบความสามารถในการทดสอบในโฮสต์ท้องถิ่น
IrishChieftain

4
ในขณะที่ localhost ไม่ทำงานสำหรับฉันฉันสามารถใช้ทั้ง 127.0.0.1 และที่อยู่ * .xip.io
davidbates

104

โปรดทราบว่าเป็นของปี 2016 reCAPTCHA ไม่ได้ไร้เดียงสาสนับสนุน localhost อีกต่อไป จากคำถามที่พบบ่อย:

โดเมน localhost ไม่ได้รับการสนับสนุนอีกต่อไปตามค่าเริ่มต้น หากคุณต้องการสนับสนุนพวกเขาเพื่อการพัฒนาต่อไปคุณสามารถเพิ่มพวกเขาลงในรายการโดเมนที่รองรับสำหรับรหัสไซต์ของคุณ ไปที่คอนโซลผู้ดูแลระบบเพื่ออัปเดตรายการโดเมนที่รองรับของคุณ เราแนะนำให้ใช้คีย์แยกต่างหากสำหรับการพัฒนาและการผลิตและไม่อนุญาต localhost ในคีย์ไซต์การผลิตของคุณ

ดังนั้นเพียงเพิ่มlocalhostในรายการโดเมนสำหรับเว็บไซต์ของคุณและคุณจะดี


12
ฉันเพิ่มlocalhostแต่ยังได้รับข้อผิดพลาด "Localhost ไม่ใช่รายการของโดเมนที่รองรับสำหรับคีย์ไซต์นี้"
aadi1295

6
@ArbazAbid คุณอาจต้องรอประมาณหนึ่งชั่วโมงเพื่อให้ Google อัปเดตระบบของพวกเขา ...
CC Inc

1
นอกจากนี้หากคุณมีหลายโครงการและคุณติดตั้ง Windows โฮสต์ไฟล์และ VirtualHosts เช่นใน WAMP สามารถพบได้ที่นี่ C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf จากนั้น ชื่อเซิร์ฟเวอร์โครงการ ผ่านการทดสอบและใช้งานได้ดี
Jeffz

@Jeffz ไฟล์โฮสต์ไม่ได้ใช้กับ Windows โดยเฉพาะนี่เป็นคำแนะนำทั่วไปที่ดี
Nathan Hornby

82

สิ่งนี้ใช้ได้กับฉัน:

"ด้วยปุ่มทดสอบต่อไปนี้คุณจะไม่ได้รับ CAPTCHA เสมอและคำขอตรวจสอบทั้งหมดจะผ่าน

รหัสไซต์: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

รหัสลับ: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

วิดเจ็ต reCAPTCHA จะแสดงข้อความเตือนเพื่ออ้างว่าเป็นเพียงเพื่อการทดสอบเท่านั้น โปรดอย่าใช้ปุ่มเหล่านี้สำหรับปริมาณการผลิตของคุณ "

แยกมาจากที่นี่: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!


1
ที่ดี! ขอบคุณสำหรับสิ่งนี้.
Sam

1
หากสิ่งนี้ไม่ทำงานฉันจะเปลี่ยนเป็นโซลูชันของ Automattic ทางออกของคุณที่นี่เป็นสิ่งเดียวที่ทำให้ฉันไม่สามารถทิ้งเทคโนโลยีที่น่ารำคาญนี้ได้
PJ Brunet

1
นี่น่าจะเป็น "คำตอบที่ถูกต้อง" เพราะมันทำให้สภาพแวดล้อม dev ของคุณแตกต่างจากสภาพแวดล้อมที่แยง
ChronoFish

67

มันง่ายมาก:

  1. ไปที่แผงผู้ดูแลระบบ google reCaptchaของคุณ
  2. เพิ่มlocalhost& 127.0.0.1ไปยังโดเมนของไซต์ใหม่เช่นภาพต่อไปนี้

ป้อนคำอธิบายรูปภาพที่นี่


ปรับปรุง:

หากคำถามของคุณเป็นวิธีการที่กำหนดreCaptchaในเว็บไซต์ Google เพื่อใช้ใน localhost แล้วฉันได้รับการเขียนข้างต้น แต่ถ้าคุณอยากรู้ว่าวิธีที่คุณสามารถใช้reCAPTCHAในทั้งสอง localhostและwebsite hostโดยรหัสที่น้อยที่สุดในการควบคุมของคุณและป้องกันรหัสบางอย่างเช่นConfigurationManager.AppSettings["ReCaptcha:SiteKey"]ในนั้นแล้ว ฉันช่วยคุณด้วยคำอธิบายและรหัสพิเศษนี้ในคำตอบของฉัน

คุณชอบการกระทำของ GET และ POST ต่อไปนี้หรือไม่?

มันรองรับ reCaptcha และไม่ต้องการรหัสอื่นใดสำหรับการจัดการ reCaptcha

[HttpGet]
[Recaptcha]
public ActionResult Register()
{
    // Your codes in GET action
}

[HttpPost]
[Recaptcha]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model, string reCaptcha_SecretKey){
   // Your codes in POST action
   if (!ModelState.IsValid || !ReCaptcha.Validate(reCaptcha_SecretKey))
   {
       // Your codes
   }
   // Your codes
}

ในมุมมอง: ( อ้างอิง )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

@if (ViewBag.RecaptchaLastErrors != null)
{
    <div>Oops! Invalid reCAPTCHA =(</div>
}

ที่จะใช้มัน

A)เพิ่มสิ่งต่อไปนี้ActionFilterในโครงการเว็บของคุณ:

public class RecaptchaAttribute : FilterAttribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
        filterContext.ActionParameters["ReCaptcha_SecretKey"] = ConfigurationManager.AppSettings[$"{setting_Key}:SecretKey"];
    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
        filterContext.Controller.ViewBag.Recaptcha = ReCaptcha.GetHtml(publicKey: ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"]);
        filterContext.Controller.ViewBag.publicKey = ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"];
    }
}

B)เพิ่มreCaptchaคีย์การตั้งค่าสำหรับlocalhost& websitelike ในwebconfigไฟล์ของคุณ:

<appSettings>

    <!-- RECAPTCHA SETTING KEYS FOR LOCALHOST -->
    <add key="ReCaptcha_Local:SiteKey" value="[Localhost SiteKey]" />
    <add key="ReCaptcha_Local:SecretKey" value="[Localhost SecretKey]" />
    <!-- RECAPTCHA SETTING KEYS FOR WEBSITE -->
    <!--<add key="ReCaptcha:SiteKey" value="[Webite SiteKey]" />
    <add key="ReCaptcha:SecretKey" value="[Webite SecretKey]" />-->

    <!-- OTHER SETTING KEYS OF YOUR PROJECT -->

</appSettings>

หมายเหตุ:ด้วยวิธีนี้คุณไม่จำเป็นต้องตั้งค่าreCaptcha_SecretKeyพารามิเตอร์ในการดำเนินการโพสต์หรือใด ๆViewBagสำหรับ reCaptcha ด้วยตนเองในการกระทำและมุมมองของคุณพวกเขาทั้งหมดจะถูกเติมโดยอัตโนมัติที่รันไทม์ด้วยค่าที่เหมาะสมขึ้นอยู่กับคุณได้เรียกใช้โครงการบน localhost หรือเว็บไซต์ .😉


16

เมื่อคุณเพิ่มโดเมนใน Google recaptcha

เพิ่มโดเมนใหม่: Localhost ไม่ใช่ localhost

"L" เป็นตัวพิมพ์ใหญ่

โชคดี


8

Google ได้หยุดการเปลี่ยนแปลงเมื่อเร็ว ๆ นี้อนุญาตให้ใช้โฮสต์ในพื้นที่โดยค่าเริ่มต้น (ตามที่สัมผัสโดย @Artur Cesar De Melo) นี่เป็นคำถามที่พบบ่อยของพวกเขา:

ฉันได้รับข้อผิดพลาด "Localhost ไม่อยู่ในรายการโดเมนที่รองรับ" ก่อนหน้านี้ฉันควรทำอย่างไร

โดเมน localhost ไม่ได้รับการสนับสนุนอีกต่อไปตามค่าเริ่มต้น หากคุณต้องการสนับสนุนพวกเขาเพื่อการพัฒนาต่อไปคุณสามารถเพิ่มพวกเขาลงในรายการโดเมนที่รองรับสำหรับรหัสไซต์ของคุณ ไปที่คอนโซลผู้ดูแลระบบเพื่ออัปเดตรายการโดเมนที่รองรับของคุณ เราแนะนำให้ใช้คีย์แยกต่างหากสำหรับการพัฒนาและการผลิตและไม่อนุญาต localhost ในคีย์ไซต์การผลิตของคุณ

1: สร้างคีย์แยกต่างหากสำหรับสภาพแวดล้อมการพัฒนาของคุณ

2: เพิ่ม 127.0.0.1 ในรายการโดเมนที่อนุญาต

3: บันทึกการเปลี่ยนแปลงและอนุญาตให้มีการเปลี่ยนแปลงได้สูงสุด 30 นาที


5

ตามเอกสารของ Google recaptcha

โดเมน localhost ไม่ได้รับการสนับสนุนอีกต่อไปตามค่าเริ่มต้น หากคุณต้องการสนับสนุนพวกเขาเพื่อการพัฒนาต่อไปคุณสามารถเพิ่มพวกเขาลงในรายการโดเมนที่รองรับสำหรับรหัสไซต์ของคุณ ไปที่คอนโซลผู้ดูแลระบบเพื่ออัปเดตรายการโดเมนที่รองรับของคุณ เราแนะนำให้ใช้คีย์แยกต่างหากสำหรับการพัฒนาและการผลิตและไม่อนุญาต localhost บนคีย์ไซต์การผลิตของคุณ


5

ลบคีย์ REcaptcha ปัจจุบันจากนั้นลงทะเบียนคีย์ใหม่และตั้งค่าการตั้งค่าคีย์ของคุณกับโดเมน: 127.0.0.1 localhost


3

Recaptcha จะไม่ทำงาน localhost/

Use `127.0.0.1/` instead of `localhost/`

คำตอบนี้แตกต่างจากคำตอบที่ยอมรับได้อย่างไร
smottt

1
เป็นเวอร์ชั่นที่ยอมรับง่ายกว่า คำตอบทั้งสองนั้นไม่ถูกต้องในคำตอบที่ยอมรับได้ สำหรับ 1) คุณไม่จำเป็นต้องเพิ่ม localhost ในรายการโดเมนที่ยอมรับ สำหรับ 2) มันไม่ทำงานกับ localhost
alianjum0

2
  1. ลงทะเบียนเว็บไซต์ของคุณที่ - https://www.google.com/recaptcha/admin
  2. เพิ่ม js plugin 3.add class และคีย์ไซต์ของคุณได้รับการพิสูจน์โดย google ป้อนคำอธิบายรูปภาพที่นี่
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>

1

หากคุณมีรหัสเก่าคุณควรสร้างรหัส API ขึ้นใหม่ ยังต้องระวังของผู้รับมอบฉันทะ


ปัญหาเกี่ยวกับพร็อกซีคืออะไร? พร็อกซีต้องอนุญาตให้มีการสื่อสารกลับจาก Google API หรือไม่
smoore4

1
@SQLDBA ไม่ว่าจะมีการกำหนดค่าที่ดีหรือตำแหน่งใหม่ (IP) มาจากประเทศที่ถูกลงโทษก็อาจทำให้เกิดปัญหาบางอย่าง
Soheil Novinfard


1

คุณสามารถเขียน "localhost" หรือ "127.0.0.1" แต่ URL จะต้องเหมือนกัน

ตัวอย่าง: Google Domains Add-> localhost URL => localhost / login.php

ตัวอย่าง: Google Domains Add-> 127.0.0.1 URL => 127.0.0.1/login.php


1

localhost ทำงานตอนนี้ อย่างไรก็ตามโปรดจำไว้ว่าหลังจากเพิ่ม localhost ไปที่รายชื่อโดเมนจะใช้เวลาถึง 30 นาทีจึงจะมีผล (ตามคำแนะนำช่วยเหลือที่แสดงกับรายการชื่อโดเมน)


0

ใช่นี่เป็นคำถามที่เก่ากว่า แต่อาจช่วยผู้ใช้ทั้งหมดที่มีปัญหากับ reCaptcha บน localhost Google แน่นอนว่า "โดยค่าเริ่มต้นคีย์ทั้งหมดทำงานใน 'localhost' (หรือ '127.0.0.1')" แต่สำหรับการใช้ reCaptcha บน localhost จริงอาจทำให้เกิดปัญหา ในกรณีของฉันฉันแก้ไขของฉันโดยใช้โทเค็นที่ปลอดภัย

ฉันโพสต์โซลูชั่นการทำงานสำหรับ PHP ที่นี่


0

ฉันเพิ่งทำงานเกี่ยวกับการสร้างเว็บไซต์ที่เกี่ยวข้องกับ recaptcha v2 และฉันต้องการทดสอบระบบอัตโนมัติบน localhost ของฉัน ฉันไม่ได้เพิ่ม ip หรือ localhost ใด ๆ ลงในพอร์ทัลผู้ดูแลระบบ recaptcha

ทำตามขั้นตอนด้านล่าง

  1. ลงชื่อเข้าใช้เพื่อปรับภาพหน้าจอไซต์ผู้ดูแลระบบใหม่

  2. ค้นหาการตั้งค่าคีย์

  3. คลิกที่การตั้งค่าขั้นสูง

  4. ภายใต้ชื่อโดเมนตรวจสอบยกเลิกการตรวจสอบตรวจสอบที่มาของ reCAPTCHA แก้ปัญหาช่องทำเครื่องหมาย ตัวเลือกนี้ใช้ในการตรวจสอบคำขอมาจากหนึ่งในโดเมนที่ระบุไว้ข้างต้น

    โปรดทราบว่าหากปิดการใช้งานคุณจะต้องตรวจสอบชื่อโฮสต์บนเซิร์ฟเวอร์ของคุณเมื่อตรวจสอบการแก้ไขปัญหา


ฉันสร้างรหัสใหม่และปิดใช้งานสิ่งนี้และใช้รหัสนี้เพื่อทดสอบใน localhost

นี่คือหน้าตัวอย่างที่ใช้ reCAPTCHA สำหรับความคิดเห็น


0

ฉันได้รับข้อผิดพลาดที่เกี่ยวข้องกับ recaptcha ในเว็บไซต์ laravel ฉันแก้ไขได้โดยใช้คำสั่งและด้วยไฟล์ env และคำตอบข้างต้นจะช่วยในปัญหานี้

ก่อนอื่นตรวจสอบไฟล์ env (ในไฟล์เคสของคุณซึ่งมีคีย์ google recaptcha) สำหรับคีย์ google recpatcha

เรียกใช้คำสั่งเหล่านี้สอง:

  1. PHP ช่างตั้งค่า: ชัดเจน
  2. php artisan cache: clear
  3. นักแต่งเพลง dump-autoload
  4. มุมมองของช่าง PHP: ชัดเจน
  5. เส้นทางช่าง PHP: ชัดเจน

    มันจะแก้ปัญหาของคุณ


นี่ไม่เกี่ยวกับปัญหาของ reCaptcha ปัญหาการแคชนี่คือการใช้ภายใต้สภาพแวดล้อมการพัฒนา (โดเมน localhost)
ROOT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.