Menggunakan reCAPTCHA di localhost

286

Saya sedang mengembangkan situs web menggunakan PHP dan saya ingin membuat verifikasi manusia di salah satu sesi. Untuk pengembangan, saya awalnya menjalankan sistem secara lokal dan ketika sudah siap, saya akan membuatnya dalam domain tertentu.

Di situs web reCAPTCHA dikatakan bahwa plugin hanya akan berfungsi di domain yang diberikan (dan subdomain).

Pertanyaan saya adalah: Apakah ada cara untuk menggunakan plugin reCAPTCHA di localhost?

rlc
sumber
Hapus cookie jika Anda menambahkan localhost setelah fakta.
Mike Flynn
3
dalam daftar domain cukup ketiklocalhost
csandreas1

Jawaban:

356

Memperbarui

Jawaban aslinya tidak lagi benar. Panduan pengembang sekarang menyatakan:

"Jika Anda ingin menggunakan" localhost "untuk pengembangan, Anda harus menambahkannya ke daftar domain."

Ini hanya akan berfungsi jika Anda mengakses localhost menggunakan 127.0.0.1/...bukan localhost/....

Jawaban asli dipertahankan di bawah ini.


Menurut Panduan Pengembang reCAPTCHA :

"domain host lokal tidak lagi didukung secara default. Jika Anda ingin terus mendukungnya untuk pengembangan, Anda dapat menambahkannya ke daftar domain yang didukung untuk kunci situs Anda. Buka konsol admin untuk memperbarui daftar domain yang didukung. Kami menyarankan untuk gunakan kunci terpisah untuk pengembangan dan produksi dan untuk tidak mengizinkan localhost pada kunci lokasi produksi Anda. "

Dengan kata lain, cukup gunakan kunci yang sama.

Nathan Osman
sumber
8
Saya memeriksa untuk memastikan apakah kata-kata itu ada di halaman itu. Itu sudah pergi! Pada 2015, Anda dapat menemukan kutipan di atas @ developers.google.com/recaptcha/docs/start
Joshua Plicque
11
Jawaban ini akurat, tetapi ada peringatan penting yang membuat saya bingung: Ketika bermigrasi dari reCAPTCHA v1 ke v2, perlu untuk membuat ulang kunci API agar pesan ini menghilang. Lebih jauh, dan sama pentingnya, jika Anda seperti saya dan Anda menyiapkan domain uji di lingkungan lokal / pengembangan Anda dengan menempatkan entri ke dalam file "host" sistem operasi, Anda perlu menambahkan domain "palsu" ke domain yang diizinkan untuk akun reCAPTCHA yang dimaksud untuk menyelesaikan kesalahan "ERROR: Domain tidak valid untuk kunci situs".
Ben Johnson
5
Ketika localhost Anda tidak bernama "localhost" maka itu tidak berfungsi.
Hexodus
12
Google tampaknya telah menghapus kemampuan untuk menguji di localhost.
IrishChieftain
4
sementara localhost tidak berfungsi untuk saya, saya bisa menggunakan 127.0.0.1 dan juga alamat * .xip.io.
davidbates
104

Harap dicatat bahwa pada 2016, ReCaptcha tidak lagi mendukung localhost secara naif . Dari FAQ:

domain localhost tidak lagi didukung secara default. Jika Anda ingin terus mendukung mereka untuk pengembangan, Anda dapat menambahkannya ke daftar domain yang didukung untuk kunci situs Anda. Buka konsol admin untuk memperbarui daftar domain yang didukung. Kami menyarankan untuk menggunakan kunci terpisah untuk pengembangan dan produksi dan untuk tidak mengizinkan localhost pada kunci lokasi produksi Anda.

Jadi tambahkan saja localhostdaftar domain Anda ke situs Anda dan Anda akan menjadi baik.

CC Inc
sumber
12
Saya menambahkan localhosttetapi masih mendapatkan kesalahan "Localhost bukan daftar domain yang didukung untuk kunci situs ini."
aadi1295
6
@ArbazAbid Anda mungkin perlu menunggu sekitar satu jam agar google memperbarui sistem mereka ...
CC Inc
1
Selain itu, jika Anda memiliki banyak proyek dan Anda menyiapkan file host Windows dan VirtualHosts, misalnya dalam WAMP dapat ditemukan di sini C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf, kemudian daftarkan Anda nama proyek Server. Diuji dan berfungsi dengan baik.
Jeffz
@ Jeffz File host bukan khusus untuk Windows - ini adalah saran umum yang bagus.
Nathan Hornby
79

Ini bekerja untuk saya:

"Dengan kunci tes berikut, Anda akan selalu mendapatkan Tidak CAPTCHA dan semua permintaan verifikasi akan berlalu.

Kunci situs: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Kunci rahasia: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Widget reCAPTCHA akan menampilkan pesan peringatan untuk mengklaim bahwa itu hanya untuk tujuan pengujian. Tolong jangan gunakan kunci ini untuk lalu lintas produksi Anda. "

Diambil dari sini: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!

Pablo
sumber
1
Bagus! Terima kasih untuk ini.
Sam
1
Jika ini berhenti berfungsi, saya akan beralih ke solusi Automattic. Solusi Anda di sini adalah satu-satunya hal yang mencegah saya menjatuhkan teknologi yang menjengkelkan ini.
PJ Brunet
1
ini tampaknya menjadi "jawaban yang tepat" karena menjaga lingkungan dev Anda berbeda dari lingkungan prod Anda.
ChronoFish
67

Sangat mudah:

  1. Buka panel admin google reCaptcha Anda
  2. Tambahkan localhost& 127.0.0.1ke domain situs baru seperti gambar berikut.

masukkan deskripsi gambar di sini


Memperbarui:

Jika pertanyaan Anda adalah cara mengatur reCaptchadi situs Google untuk menggunakannya di localhost, maka saya telah menulis itu di atas tetapi jika Anda ingin tahu bahwa bagaimana Anda dapat menggunakan reCAPTCHApada kedua localhost dan website hostoleh kode minimal di controller Anda dan mencegah beberapa kode seperti ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]di kemudian Saya membantu Anda dengan deskripsi dan kode tambahan ini dalam jawaban saya.

Apakah Anda suka tindakan GET dan POST berikut?

Ini 👇 mendukung reCaptcha dan tidak memerlukan kode lain untuk menangani 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
}

Dalam Tampilan: ( referensi )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

Untuk menggunakannya

A) Tambahkan yang berikut ActionFilterke proyek Web Anda:

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) Tambahkan reCaptchakunci pengaturan untuk keduanya localhost& websitesuka di webconfigfile Anda :

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

Catatan: Dengan cara ini Anda tidak perlu mengatur reCaptcha_SecretKeyparameter dalam tindakan posting atau apa pun ViewBaguntuk reCaptcha secara manual dalam Tindakan dan Tampilan Anda, semuanya akan diisi secara otomatis saat runtime dengan nilai yang sesuai tergantung pada Anda telah menjalankan proyek di localhost atau situs web .😉

RAM
sumber
16

ketika Anda menambahkan Domain di Google recaptcha

Tambahkan domain baru: Localhost bukan localhost

"L" adalah huruf kapital

Semoga berhasil

Yoni Ayalon
sumber
8

Google baru-baru ini berubah berhenti mengizinkan localhost diizinkan secara default. (disentuh oleh @Artur Cesar De Melo) Ini di bawah FAQ mereka:

Saya mendapat kesalahan "Localhost tidak ada dalam daftar domain yang didukung". Ini bekerja sebelumnya, apa yang harus saya lakukan?

domain localhost tidak lagi didukung secara default. Jika Anda ingin terus mendukung mereka untuk pengembangan, Anda dapat menambahkannya ke daftar domain yang didukung untuk kunci situs Anda. Buka konsol admin untuk memperbarui daftar domain yang didukung. Kami menyarankan untuk menggunakan kunci terpisah untuk pengembangan dan produksi dan untuk tidak mengizinkan localhost pada kunci lokasi produksi Anda.

1: Buat kunci terpisah untuk lingkungan pengembangan Anda

2: Tambahkan 127.0.0.1 ke daftar domain yang diizinkan

3: Simpan perubahan dan biarkan hingga 30 menit agar perubahan diterapkan

tony09uk
sumber
5

Sesuai dokumentasi Google recaptcha

domain localhost tidak lagi didukung secara default. Jika Anda ingin terus mendukung mereka untuk pengembangan, Anda dapat menambahkannya ke daftar domain yang didukung untuk kunci situs Anda. Buka konsol admin untuk memperbarui daftar domain yang didukung. Kami menyarankan untuk menggunakan kunci terpisah untuk pengembangan dan produksi dan untuk tidak mengizinkan localhost pada kunci lokasi produksi Anda

Artur Cesar De Melo
sumber
5

Hapus kunci REcaptcha saat ini, lalu daftarkan kunci baru dan atur pengaturan kunci Anda dengan domain: 127.0.0.1 localhost

Mykhailo
sumber
3

Recaptcha tidak akan berfungsi localhost/

Use `127.0.0.1/` instead of `localhost/`
alianjum0
sumber
Bagaimana jawaban ini berbeda dari yang diterima?
smottt
1
Ini adalah versi yang lebih sederhana dari versi yang diterima. Kedua jawaban salah dalam jawaban yang diterima. Untuk 1) Anda tidak perlu menambahkan localhost ke daftar domain yang diterima. Untuk 2) Tidak berfungsi dengan localhost.
alianjum0
2
  1. Daftarkan situs web Anda di - https://www.google.com/recaptcha/admin
  2. tambahkan js plugin 3. tambahkan kelas dan kunci situs Anda disediakan oleh google masukkan deskripsi gambar di sini
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>
Saquib Azam
sumber
1

Jika Anda memiliki kunci lama, Anda harus membuat ulang Kunci API Anda. Waspadai proxy.

Soheil Novinfard
sumber
Apa masalah dengan proxy? Proksi perlu mengizinkan komunikasi kembali dari Google API?
smoore4
1
@SQLDBA Entah itu tidak dikonfigurasi dengan baik atau lokasi baru (IP) dari negara-negara sanksi, itu dapat menyebabkan beberapa masalah.
Soheil Novinfard
1

Anda dapat menulis "localhost" atau "127.0.0.1" tetapi URL harus sama

Contoh: Google Domains Tambah-> localhost URL => localhost / login.php

Contoh: Google Domains Tambah-> 127.0.0.1 URL => 127.0.0.1/login.php

Mert Yılmaz
sumber
1

localhost berfungsi sekarang. Namun, ingat bahwa setelah menambahkan localhost ke daftar nama domain, perlu waktu hingga 30 menit untuk berlaku (sesuai dengan tip bantuan yang ditunjukkan terhadap daftar nama domain).

Gautam Jain
sumber
0

Ya, ini pertanyaan yang lebih lama tetapi ini mungkin membantu semua pengguna yang memiliki masalah dengan reCaptcha di localhost. Google memang mengatakan "Secara default, semua kunci berfungsi di 'localhost' (atau '127.0.0.1')" tetapi secara nyata menggunakan reCaptcha di localhost dapat menyebabkan masalah. Dalam kasus saya, saya memecahkan milik saya menggunakan token aman

Saya memposting SOLUSI KERJA untuk PHP di sini

Hexodus
sumber
0

Saya baru-baru ini bekerja membuat situs web yang melibatkan recaptcha v2 dan saya perlu melakukan otomatisasi pengujian pada localhost saya. Saya tidak menambahkan ip atau localhost ke portal admin recaptcha.

Ikuti langkah-langkah di bawah ini

  1. Log in ke tangkapan layar recaptcha admin

  2. Temukan Pengaturan Kunci

  3. Klik pada pengaturan lanjutan

  4. Di bawah Validasi Nama Domain , hapus centang Periksa kotak centang asal-usul solusi reCAPTCHA . Opsi ini digunakan untuk memverifikasi permintaan yang berasal dari salah satu domain yang tercantum di atas.

    Harap dicatat bahwa, Jika dinonaktifkan, Anda harus memeriksa nama host di server Anda saat memverifikasi solusi.


Saya membuat kunci baru dan menonaktifkan ini dan menggunakan kunci ini untuk pengujian di localhost.

Ini adalah halaman contoh yang mengimplementasikan reCAPTCHA untuk komentar.

cyberviral
sumber
0

saya mendapat kesalahan terkait dengan recaptcha di situs web laravel, saya menyelesaikannya dengan menggunakan beberapa perintah dan dengan file env dan jawaban di atas juga akan membantu dalam masalah ini.

pertama-tama periksa file env (dalam file kasus Anda yang memiliki kunci google recaptcha) untuk kunci google recpatcha.

kedua jalankan perintah ini:

  1. php artisan config: clear
  2. cache artisan php: hapus
  3. komposer dump-autoload
  4. tampilan artisan php: jelas
  5. php artisan route: clear

    itu akan menyelesaikan masalah Anda

divyansh dixit
sumber
Ini bukan tentang masalah dengan reCaptcha, masalah caching, ini tentang menggunakannya di lingkungan pengembangan (domain host lokal).
ROOT