Sử dụng reCAPTCHA trên localhost


286

Tôi đang phát triển một trang web bằng PHP và tôi muốn xác minh con người trong một trong các phiên. Để phát triển, ban đầu tôi đang chạy hệ thống cục bộ và khi nó sẵn sàng, tôi sẽ đưa nó vào một miền nhất định.

Trong trang web reCAPTCHA , người ta nói rằng plugin sẽ chỉ hoạt động tại tên miền đã cho (và tên miền phụ).

Câu hỏi của tôi là: Có cách nào để sử dụng plugin reCAPTCHA trên localhost không?


Xóa cookie nếu bạn đã thêm localhost sau khi thực tế.
Mike Flynn

3
trong danh sách tên miền chỉ cần gõlocalhost
csandreas1

Câu trả lời:


356

Cập nhật

Câu trả lời ban đầu không còn đúng nữa. Hướng dẫn của nhà phát triển hiện nêu:

"Nếu bạn muốn sử dụng" localhost "để phát triển, bạn phải thêm nó vào danh sách các tên miền."

Điều này sẽ chỉ hoạt động nếu bạn truy cập localhost bằng cách sử dụng 127.0.0.1/...chứ không phải localhost/....

Câu trả lời ban đầu được bảo tồn dưới đây.


Theo Hướng dẫn dành cho nhà phát triển reCAPTCHA :

"Các tên miền localhost không còn được hỗ trợ theo mặc định. Nếu bạn muốn tiếp tục hỗ trợ chúng để phát triển, bạn có thể thêm chúng vào danh sách các tên miền được hỗ trợ cho khóa trang web của mình. Truy cập bảng điều khiển quản trị để cập nhật danh sách các tên miền được hỗ trợ. Chúng tôi khuyên bạn nên sử dụng một khóa riêng để phát triển và sản xuất và không cho phép localhost trên khóa trang web sản xuất của bạn. "

Nói cách khác, chỉ cần sử dụng cùng một khóa.


8
Tôi đã kiểm tra để xác nhận xem các từ có trên trang đó hay không. Nó đã ra đi! Trong năm 2015, bạn có thể tìm thấy trích dẫn ở trên @ developers.google.com/recaptcha/docs/start
Joshua Plicque

11
Câu trả lời này là chính xác, nhưng có một cảnh báo quan trọng khiến tôi bối rối: Khi di chuyển từ reCAPTCHA v1 sang v2, cần phải tạo lại các khóa API để thông báo này biến mất. Hơn nữa, và không kém phần quan trọng, nếu bạn giống như tôi và bạn thiết lập các miền thử nghiệm trong môi trường phát triển / cục bộ của mình bằng cách đặt các mục vào tệp "máy chủ" của hệ điều hành, bạn sẽ cần thêm các miền "giả" đó vào các miền được phép tài khoản reCAPTCHA được đề cập để khắc phục lỗi "LRI: Tên miền không hợp lệ cho khóa trang web".
Ben Johnson

5
Khi localhost của bạn không được đặt tên là "localhost" thì nó không hoạt động.
Hexodus

12
Google dường như đã loại bỏ khả năng kiểm tra trên localhost.
IrishChieftain

4
trong khi localhost không hoạt động với tôi, tôi có thể sử dụng cả 127.0.0.1 và cả địa chỉ * .xip.io.
davidbates

104

Xin lưu ý rằng kể từ năm 2016, ReCaptcha không còn ngây thơ hỗ trợ localhost nữa . Từ câu hỏi thường gặp:

tên miền localhost không còn được hỗ trợ theo mặc định. Nếu bạn muốn tiếp tục hỗ trợ chúng để phát triển, bạn có thể thêm chúng vào danh sách các tên miền được hỗ trợ cho khóa trang web của bạn. Chuyển đến bảng điều khiển quản trị để cập nhật danh sách các miền được hỗ trợ. Chúng tôi khuyên bạn nên sử dụng một khóa riêng để phát triển và sản xuất và không cho phép localhost trên khóa trang web sản xuất của bạn.

Vì vậy, chỉ cần thêm localhostvào danh sách tên miền cho trang web của bạn và bạn sẽ ổn.


12
Tôi đã thêm localhostnhưng vẫn gặp lỗi "Localhost không phải là danh sách các tên miền được hỗ trợ cho khóa trang web này."
aadi1295

6
@ArbazAbid Bạn có thể phải đợi một giờ hoặc lâu hơn để google cập nhật hệ thống của họ ...
CC Inc

1
Ngoài ra, nếu bạn có nhiều dự án và bạn thiết lập tệp máy chủ Windows và Virtualhost, ví dụ: trong WAMP, bạn có thể tìm thấy ở đây C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ Extra \ httpd-vhosts.conf, sau đó đăng ký Tên máy chủ dự án. Đã thử nghiệm và hoạt động tốt.
Jeffz

@Jeffz Tệp máy chủ không phải là Windows cụ thể - đây là lời khuyên chung tốt.
Nathan Hornby

79

Điều này làm việc cho tôi:

"Với các khóa kiểm tra sau, bạn sẽ luôn nhận được Không CAPTCHA và tất cả các yêu cầu xác minh sẽ vượt qua.

Chìa khoá website: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Chìa khoá bí mật: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Tiện ích reCAPTCHA sẽ hiển thị thông báo cảnh báo để cho rằng nó chỉ dành cho mục đích thử nghiệm. Vui lòng không sử dụng các khóa này cho lưu lượng sản xuất của bạn. "

Trích xuất từ ​​đây: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!


1
tuyệt quá! Cảm ơn vì điều đó.
Sam

1
Nếu điều này dừng hoạt động, tôi sẽ chuyển sang giải pháp của Automattic. Giải pháp của bạn ở đây là điều duy nhất khiến tôi không bỏ công nghệ gây phiền nhiễu này.
PJ Brunet

1
đây dường như là "câu trả lời đúng" vì nó giữ cho môi trường dev của bạn khác biệt với môi trường prod của bạn.
ChronoFish

67

Nó rất dễ:

  1. Truy cập bảng điều khiển quản trị google reCaptcha của bạn
  2. Thêm localhost& 127.0.0.1vào tên miền của một trang web mới như hình ảnh sau đây.

nhập mô tả hình ảnh ở đây


Cập nhật:

Nếu câu hỏi của bạn là làm thế nào để thiết lập reCaptchatrang web Google để sử dụng nó trong localhost, thì tôi đã được viết ở trên nhưng nếu bạn tò mò rằng làm thế nào bạn có thể sử dụng reCAPTCHAtrên cả hai localhostwebsite hostbởi các mã tối thiểu trong bộ điều khiển của bạn và ngăn chặn một số mã như ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]trong đó Tôi giúp bạn với mô tả thêm và mã trong câu trả lời của tôi.

Bạn có thích các hành động GET và POST sau đây không?

Nó hỗ trợ reCaptcha và không cần bất kỳ mã nào khác để xử lý 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
}

Trong Chế độ xem: ( tham khảo )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

Để dùng nó

A) Thêm phần sau ActionFiltervào dự án Web của bạn:

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) Thêm các reCaptchaphím cài đặt cho cả hai localhostwebsitethích nó trong webconfigtệp của bạn :

<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>

Lưu ý: Bằng cách này, bạn không cần đặt reCaptcha_SecretKeytham số trong hành động đăng hoặc bất kỳ ViewBagreCaptcha nào theo cách thủ công trong Hành động và Chế độ xem của mình, tất cả chúng sẽ được điền tự động khi chạy với các giá trị phù hợp tùy thuộc vào bạn đã chạy dự án trên localhost hoặc trang web .😉


16

khi bạn thêm Tên miền vào Google recaptcha

Thêm tên miền mới: Localhost chứ không phải localhost

"L" là chữ in hoa

Chúc may mắn


8

Google gần đây đã thay đổi ngừng cho phép localhost được cho phép theo mặc định. (như được chạm vào bởi @Artur Cesar De Melo) Đây là câu hỏi thường gặp của họ:

Tôi đang gặp lỗi "Localhost không có trong danh sách các miền được hỗ trợ". Điều này đã làm việc trước đây, tôi nên làm gì?

tên miền localhost không còn được hỗ trợ theo mặc định. Nếu bạn muốn tiếp tục hỗ trợ chúng để phát triển, bạn có thể thêm chúng vào danh sách các tên miền được hỗ trợ cho khóa trang web của bạn. Chuyển đến bảng điều khiển quản trị để cập nhật danh sách các miền được hỗ trợ. Chúng tôi khuyên bạn nên sử dụng một khóa riêng để phát triển và sản xuất và không cho phép localhost trên khóa trang web sản xuất của bạn.

1: Tạo khóa riêng cho môi trường phát triển của bạn

2: Thêm 127.0.0.1 vào danh sách các miền được phép

3: Lưu các thay đổi và cho phép tối đa 30 phút để các thay đổi có hiệu lực


5

Theo tài liệu Google recaptcha

tên miền localhost không còn được hỗ trợ theo mặc định. Nếu bạn muốn tiếp tục hỗ trợ chúng để phát triển, bạn có thể thêm chúng vào danh sách các tên miền được hỗ trợ cho khóa trang web của bạn. Chuyển đến bảng điều khiển quản trị để cập nhật danh sách các miền được hỗ trợ. Chúng tôi khuyên bạn nên sử dụng một khóa riêng để phát triển và sản xuất và không cho phép localhost trên khóa trang web sản xuất của bạn


5

Xóa khóa REcaptcha hiện tại, sau đó đăng ký khóa mới và đặt cài đặt khóa của bạn với các miền: 127.0.0.1 localhost


3

Recaptcha sẽ không hoạt động trên localhost/

Use `127.0.0.1/` instead of `localhost/`

Câu trả lời này khác với câu trả lời như thế nào?
smottt

1
Nó là phiên bản đơn giản hơn của một chấp nhận. Cả hai câu trả lời đều không chính xác. Đối với 1) Bạn không cần thêm localhost vào danh sách tên miền được chấp nhận. Đối với 2) Nó không hoạt động với localhost.
alianjum0

2
  1. Đăng ký trang web của bạn tại - https://www.google.com/recaptcha/admin
  2. thêm plugin js 3.add class và khóa trang web của bạn được chứng minh bởi google nhập mô tả hình ảnh ở đây
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>

1

Nếu bạn có khóa cũ, bạn nên tạo lại Khóa API của mình. Cũng nên biết về proxy.


Vấn đề với proxy là gì? Proxy cần cho phép liên lạc trở lại từ Google API?
smoore4

1
@QueryDBA Hoặc không được cấu hình tốt hoặc vị trí mới (IP) là từ các quốc gia xử phạt, nó có thể gây ra một số vấn đề.
Soheil Novinfard


1

Bạn có thể viết "localhost" hoặc "127.0.0.1" nhưng URL phải giống nhau

Ví dụ: Tên miền Google Thêm-> URL localhost => localhost / login.php

Ví dụ: Tên miền Google Thêm-> 127.0.0.1 URL => 127.0.0.1/login.php


1

localhost hoạt động ngay bây giờ. Tuy nhiên, hãy nhớ rằng sau khi thêm localhost vào danh sách tên miền, phải mất tới 30 phút để có hiệu lực (theo mẹo trợ giúp được hiển thị so với danh sách tên miền).


0

Vâng, đây là một câu hỏi cũ hơn nhưng điều này có thể giúp tất cả người dùng gặp vấn đề với reCaptcha trên localhost. Google thực sự nói "Theo mặc định, tất cả các khóa hoạt động trên 'localhost' (hoặc '127.0.0.1')" nhưng thực tế khi sử dụng reCaptcha trên localhost có thể gây ra sự cố. Trong trường hợp của tôi, tôi đã giải quyết bằng cách sử dụng mã thông báo an toàn

Tôi đã đăng một GIẢI PHÁP LÀM VIỆC cho PHP tại đây


0

Gần đây tôi đã làm việc để tạo một trang web liên quan đến recaptcha v2 và tôi có nhu cầu tự động kiểm tra trên localhost của mình. Tôi không thêm bất kỳ ip hoặc localhost nào vào cổng quản trị recaptcha.

Thực hiện theo các bước dưới đây

  1. Đăng nhập vào ảnh chụp màn hình trang web quản trị recaptcha

  2. Xác định vị trí cài đặt khóa

  3. Nhấp vào cài đặt nâng cao

  4. Trong Xác thực tên miền , bỏ chọn Xác minh nguồn gốc của hộp kiểm giải pháp reCAPTCHA . Tùy chọn này được sử dụng để xác minh các yêu cầu đến từ một trong các miền được liệt kê ở trên.

    Xin lưu ý rằng, nếu bị tắt, bạn phải kiểm tra tên máy chủ trên máy chủ của mình khi xác minh giải pháp.


Tôi đã tạo một khóa mới và vô hiệu hóa khóa này và sử dụng khóa này để kiểm tra trong localhost.

Đây là một trang mẫu thực hiện reCAPTCHA cho ý kiến.


0

Tôi gặp lỗi liên quan đến recaptcha trong trang web laravel, tôi đã giải quyết nó bằng cách sử dụng một số lệnh và với tệp env và câu trả lời ở trên cũng sẽ giúp ích trong vấn đề này.

trước hết hãy kiểm tra tệp env (trong trường hợp của bạn có khóa google recaptcha) cho khóa google recpatcha.

thứ hai chạy các lệnh này:

  1. Cấu hình nghệ nhân php: rõ ràng
  2. Bộ đệm thủ công php: xóa
  3. nhà soạn nhạc tự đổ
  4. Chế độ xem nghệ nhân php: rõ ràng
  5. lộ trình nghệ nhân php: rõ ràng

    nó sẽ giải quyết vấn đề của bạn


Đây không phải là vấn đề với reCaptcha, vấn đề bộ đệm, đây là về việc sử dụng nó trong môi trường phát triển (tên miền localhost).
ROOT
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.