Localhost üzerinde reCAPTCHA kullanma


286

PHP kullanarak bir web sitesi geliştiriyorum ve oturumlardan birinde insan doğrulaması yapmak istiyorum. Geliştirme için, başlangıçta sistemi yerel olarak çalıştırıyorum ve hazır olduğunda, belirli bir etki alanına koyacağım.

In reCAPTCHA'nın web bunun eklenti yalnızca verilen etki (ve alt alanlar) de çalışacaktır söylenir.

Benim sorum: reCAPTCHA eklentisini bir localhost üzerinde kullanmanın herhangi bir yolu var mı?


Bundan sonra localhost eklediyseniz, çerezleri temizleyin.
Mike Flynn

3
alan adına sadece yazınlocalhost
csandreas1

Yanıtlar:


357

Güncelleme

Orijinal cevap artık doğru değil. Geliştirici kılavuzu şimdi şunları belirtiyor:

"Geliştirme için" localhost "kullanmak istiyorsanız, etki alanı listesine eklemeniz gerekir."

Bu yalnızca 127.0.0.1/...bunun yerine localhost'a erişirseniz çalışır localhost/....

Orijinal cevap aşağıda korunmaktadır.


Göre reCAPTCHA'nın Geliştirici Kılavuzu'nda :

"localhost etki alanları artık varsayılan olarak desteklenmemektedir. Geliştirilmeleri için onları desteklemeye devam etmek istiyorsanız, bunları site anahtarınız için desteklenen etki alanları listesine ekleyebilirsiniz. Desteklenen etki alanları listenizi güncellemek için yönetici konsoluna gidin. geliştirme ve üretim için ayrı bir anahtar kullanın ve üretim sitesi anahtarınızda localhost'a izin vermeyin. "

Başka bir deyişle, sadece aynı anahtarı kullanın.


8
Kelimelerin o sayfada olup olmadığını kontrol ettim. Gitmişti! 2015 yılında yukarıdaki alıntıyı @ developers.google.com/recaptcha/docs/start
Joshua Plicque

11
Bu yanıt doğrudur, ancak beni rahatsız eden önemli bir uyarı var: reCAPTCHA v1'den v2'ye geçerken, bu mesajın kaybolması için API anahtarlarını yeniden oluşturmak gerekir. Dahası ve aynı derecede önemli, eğer benim gibiyseniz ve işletim sisteminin "hosts" dosyasına girişler koyarak yerel / geliştirme ortamınızda test alanları oluşturursanız, bu "sahte" alanları izin verilen alan adlarına eklemeniz gerekir. "HATA: Site anahtarı için geçersiz etki alanı" hatasını çözmek için söz konusu reCAPTCHA hesabı.
Ben Johnson

5
Yerel ana makineniz "localhost" olarak adlandırılmadığında, çalışmaz.
Hexodus

12
Google, localhost üzerinde test yapma özelliğini kaldırmış görünüyor.
IrishChieftain

4
localhost benim için çalışmadı iken hem 127.0.0.1 hem de * .xip.io adresi kullanabildim.
davidbates

104

Lütfen 2016'dan itibaren ReCaptcha'nın artık yerel ana bilgisayarı naif olarak desteklemediğini unutmayın . SSS bölümünden:

localhost alanları artık varsayılan olarak desteklenmemektedir. Geliştirilmeleri için onları desteklemeye devam etmek istiyorsanız, site anahtarınız için desteklenen alanlar listesine ekleyebilirsiniz. Desteklenen alan adları listenizi güncellemek için yönetici konsoluna gidin. Geliştirme ve üretim için ayrı bir anahtar kullanmanızı ve üretim sitesi anahtarınızda localhost'a izin vermemenizi öneririz.

localhostSiteniz için alan adları listenize eklemeniz yeterlidir.


12
Ben eklendi localhostama hala alma hatası "Localhost değil bu site anahtarı için desteklenen alanların listesi aşağıdadır."
aadi1295

6
@ArbazAbid Google'ın sistemlerini güncellemesi için bir saat kadar beklemeniz gerekebilir ...
CC Inc

1
Ayrıca, birçok projeniz varsa ve Windows hosts dosyasını ve VirtualHost'ları kuruyorsanız, örneğin WAMP'ta burada bulunabilir: C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf, proje SunucuAdı. Test edildi ve iyi çalışıyor.
Jeffz

@Jeffz Host dosyası Windows'a özgü değildir - bu iyi bir genel tavsiyedir.
Nathan Hornby

82

Bu benim için çalıştı:

"Aşağıdaki test anahtarları ile her zaman CAPTCHA yok alırsınız ve tüm doğrulama istekleri geçer.

Site anahtarı: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Gizli anahtar: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

ReCAPTCHA widget'ı, yalnızca test amaçlı olduğunu iddia eden bir uyarı mesajı gösterir. Lütfen bu anahtarları üretim trafiğiniz için kullanmayın. "

Buradan alıntı: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!


1
harika! Bunun için teşekkürler.
Sam

1
Bu çalışmayı durdurursa, Automattic'in çözümüne geçeceğim. Buradaki çözümün beni bu sinir bozucu teknolojiyi düşürmekten alıkoyan tek şey.
PJ Brunet

1
bu "doğru cevap" gibi görünüyor çünkü geliştirme ortamınızı eşya ortamınızdan farklı tutar.
ChronoFish

67

O kadar kolay:

  1. Senin git google ReCaptcha yönetici paneline
  2. Aşağıdaki resim gibi yeni bir sitenin alan adlarını localhost& 127.0.0.1alanlarına ekleyin .

resim açıklamasını buraya girin


Güncelleme:

Sorunuzun nasıl ayarlanacağını ise reCaptchalocalhost içinde kullanmak için Google sitesinde, sonra ben olmuştur yukarıda yazdım ama kullandığınız nasıl olduğunu merak eden varsa reCAPTCHAüzerine hem localhost ve website hosttarafından kontrolörünüze minimal kodları ve benzeri bazı kodları önlemek ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]sonra içinde Cevabımdaki bu ekstra açıklama ve kodlarda size yardımcı oluyorum.

Aşağıdaki GET ve POST işlemlerini beğendiniz mi?

ReCaptcha'yı destekler ve reCaptcha'yı işlemek için başka kodlara ihtiyaç duymaz.

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

In Görünüm: ( referans )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

Kullanmak için

A)ActionFilter Web projenize aşağıdakileri ekleyin :

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) Ekle reCaptchaikisi için ayarları anahtarları localhost& websitesenin buna benzer webconfigdosyası:

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

Not: Bu şekilde , eylemler ve Görünümlerinizde post eylemde veya reCaptcha için manuel olarak herhangi bir reCaptcha_SecretKeyparametre ayarlamanıza gerek kalmadı , hepsi projeyi localhost veya web sitesinde çalıştırdığınıza bağlı olarak uygun zamanda uygun değerlerle otomatik olarak doldurulacaktır. .😉ViewBag


17

Google recaptcha'da Alan Adları eklediğinizde

Yeni alan adı ekle: localhost değil localhost

"L" büyük harftir

İyi şanslar


8

Google kısa süre önce değiştirildi ve varsayılan olarak localhost'a izin verildi. (@Artur Cesar De Melo tarafından değinildiği gibi) Bu onların SSS altındadır:

"Localhost desteklenen alanlar listesinde değil" hatası alıyorum. Bu daha önce işe yarıyordu, ne yapmalıyım?

localhost alanları artık varsayılan olarak desteklenmemektedir. Geliştirilmeleri için onları desteklemeye devam etmek istiyorsanız, site anahtarınız için desteklenen alanlar listesine ekleyebilirsiniz. Desteklenen alan adları listenizi güncellemek için yönetici konsoluna gidin. Geliştirme ve üretim için ayrı bir anahtar kullanmanızı ve üretim sitesi anahtarınızda localhost'a izin vermemenizi öneririz.

1: Geliştirme ortamınız için ayrı bir anahtar oluşturun

2: İzin verilen alanlar listesine 127.0.0.1 ekleyin

3: Değişiklikleri kaydedin ve değişikliklerin etkili olması için 30 dakikaya kadar bekleyin


5

Gereğince Google recaptcha belgeleri

localhost alanları artık varsayılan olarak desteklenmemektedir. Geliştirilmeleri için onları desteklemeye devam etmek istiyorsanız, site anahtarınız için desteklenen alanlar listesine ekleyebilirsiniz. Desteklenen alan adları listenizi güncellemek için yönetici konsoluna gidin. Geliştirme ve üretim için ayrı bir anahtar kullanmanızı ve üretim sitesi anahtarınızda localhost'a izin vermemenizi öneririz.


5

Geçerli REcaptcha anahtarını kaldırın, ardından yeni anahtarı kaydedin ve anahtar ayarlarınızı alan adlarıyla ayarlayın : 127.0.0.1 localhost


3

Recaptcha üzerinde çalışmayacak localhost/

Use `127.0.0.1/` instead of `localhost/`

Bu cevap kabul edilen cevaptan nasıl farklı?
smottt

1
Kabul edilenin daha basit bir sürümüdür. Kabul edilen bir cevapta her iki cevap da yanlıştır. 1) Kabul edilen etki alanları listesine localhost eklemenize gerek yoktur. 2) localhost ile çalışmaz.
alianjum0

2
  1. Web sitenizi şu adresten kaydedin - https://www.google.com/recaptcha/admin
  2. js plugin 3.add sınıfını ve google tarafından kanıtlanmış site anahtarınızı ekleyin resim açıklamasını buraya girin
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>

1

Eski anahtarınız varsa, API Anahtarınızı yeniden oluşturmanız gerekir. Ayrıca vekillerin farkında olun.


Proxy'lerle ilgili sorun nedir? Proxy'nin Google API'sından iletişime izin vermesi gerekiyor mu?
smoore4

1
@SQLDBA Ya iyi yapılandırılmamış ya da yeni konum (IP) yaptırım ülkelerinden geliyor, bazı sorunlara neden olabilir.
Soheil Novinfard


1

"Localhost" veya "127.0.0.1" yazabilirsiniz, ancak URL aynı olmalıdır

Örnek: Google Domains Add-> localhost URL => localhost / login.php

Örnek: Google Domains Add-> 127.0.0.1 URL => 127.0.0.1/login.php


1

localhost şimdi çalışıyor. Bununla birlikte, etki alanı adları listesine localhost ekledikten sonra, etki alanının etkinleştirilmesi 30 dakika kadar sürebilir (etki alanı adları listesine karşı gösterilen yardım ipucuna göre).


0

Evet, bu daha eski bir soru ama bu, localhost'ta reCaptcha ile sorun yaşayan tüm kullanıcılara yardımcı olabilir. Google gerçekten de "Varsayılan olarak, tüm anahtarlar" localhost "(veya" 127.0.0.1 ") üzerinde çalışır" ancak localhost'ta reCaptcha kullanmak gerçekte sorunlara neden olabilir. Benim durumumda güvenli jeton kullanarak madeni çözdüm

Burada PHP için ÇALIŞMA ÇÖZÜMÜ yayınladım


0

Son zamanlarda recaptcha v2 içeren bir web sitesi oluşturmaya çalışıyordum ve localhost'umda test otomasyonu yapmaya ihtiyacım var. Recaptcha yönetici portalına herhangi bir ip veya localhost eklemedim.

Aşağıdaki adımları izleyin

  1. Recaptcha Admin Site Ekran Görüntüsü

  2. Anahtar Ayarlarını Bulma

  3. Gelişmiş ayarlara tıklayın

  4. Alan Adı Doğrulaması altında reCAPTCHA çözümlerinin kökenini doğrula onay kutusunun işaretini kaldırın . Bu seçenek, yukarıda listelenen alan adlarından birinden gelen istekleri doğrulamak için kullanılır.

    Devre dışı bırakılmışsa, bir çözümü doğrularken sunucunuzdaki ana bilgisayar adını kontrol etmeniz gerektiğini lütfen unutmayın.


Yeni bir anahtar oluşturdum ve bunu devre dışı bıraktım ve bu anahtarı localhost'ta test etmek için kullandım.

Bu, yorumlar için reCAPTCHA uygulayan örnek bir sayfadır .


0

Ben laravel web sitesinde recaptcha ile ilgili hata var, bazı komut ve env dosyası ile çözdüm ve yukarıdaki cevap da bu soruna yardımcı olacaktır.

her şeyden önce google recpatcha anahtarı için env dosyasını (google recaptcha anahtarına sahip olan dosyada) kontrol edin.

ikinci olarak şu komutu çalıştırın:

  1. php artisan yapılandırma: temizle
  2. php esnaf önbellek: temizle
  3. besteci dökümü otomatik yükleme
  4. php artisan görünüm: açık
  5. php esnaf yolu: açık

    sorununuzu çözecek


Bu reCaptcha ile ilgili sorun, önbellek sorunları ile ilgili değil, bu geliştirme ortamında (localhost etki alanları) kullanmakla ilgilidir.
KÖK
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.