Zapier’de Zaman Aşımına Takılmadan CAPTCHA Nasıl Çözülür

Bir Zapier captcha adımı, CAPTCHA’larla hiç ilgisi olmayan bir nedenle başarısız olur: bir Code adımına varsayılan olarak 10 ya da 30 saniye verilir, çözüm ise bundan uzun sürer. Gönderimle sorgulamayı tek adımda yaparsanız zaman aşımına uğrarsınız. İşe yarayan şekil, araya bir gecikme konmuş iki adım ve Zapier’in sunucularından erişilebilen bir çözücü; bu da loopback adresi yerine Sunucu modu demek. Sorunun bu olduğunu bir kez anladıktan sonra ikisi de beş dakikalık değişiklik.
Neye ihtiyacınız var
- Şu uygulamayı içeren herhangi bir plandaki bir Zapier hesabı: Code by Zapier.
- Zapier’in erişebileceği, sabit genel IP’si olan bir makinede Sunucu modunda çalışan CapSkip. Bkz. bağlantı ayarları.
- Anahtar doğrulaması açık ve bu Zap için verilmiş bir API anahtarı.
- Korumalı formun sitekey’i ve sayfa URL’si, bunları hangi tetikleyici adım sağlıyorsa oradan.
Burada Sunucu modu isteğe bağlı değil
Bu blogdaki diğer bütün rehberler çözücüyü şu adreste başlatır: 127.0.0.1:8080, ki kendi makinenizde bu tamamen doğrudur. Zapier sizin makinenizde değil. Zap’ınız Zapier’in altyapısında çalışır, dolayısıyla bir Code adımından 127.0.0.1 adresine yapılan bir istek Zapier’in kendi konteynerine çözümlenir ve karşılığında hiçbir şey almaz.
CapSkip’in bağlantı ayarlarında bunun için ikinci bir mod var. Yerel 127.0.0.1 adresine bağlanır ve yalnızca o cihazdan erişilebilir. Sunucu ağ adresinize veya genel IP’nize bağlanır, böylece barındırılan bir platform onu aynı 2captcha uyumlu API üzerinden çağırabilir. Sabit bir genel IP öneriliyor, çünkü bu adres Zap’ınızın içine giriyor ve yerinden oynamasını istemezsiniz.
Bu hâlâ sizin donanımınız ve hâlâ ölçümsüz. Sunucu modu, çözücünün nerede dinlediğini değiştirir; kime ait olduğunu ya da nasıl faturalandırdığını değil. Değiştirdiği şey maruz kalma, o yüzden portu açmadan önce anahtar doğrulamasını açın ve Zap’a kendi anahtarını verin ki başka hiçbir şeyi rahatsız etmeden iptal edebilesiniz.
Zap’ınızın şeklini belirleyen zaman aşımı
Code by Zapier, Python veya JavaScript kodunuzu bir çalışma süresi tavanıyla çalıştırır. Starter’da bu tavan 10 saniye. Pro, Team ve Company’de 30 saniye. Zapier ayrıca bir Code adımını 10 dakikaya kadar çıkaran uzatılmış çalışma süreleri sunuyor; bunu adımın kendi üzerinde yapılandırıyorsunuz.
Şimdi bunu bir çözümle karşılaştırın. Bir görsel CAPTCHA genelde saniyeler sürer. Bir reCAPTCHA v2 normalde 15 ile 45 saniye arasında yanıtlanır ve sorgulama tavsiyesi, ilk kontrolünüzden önce kabaca 15-20 saniye beklemektir. Yani gönder-sonra-sorgula döngüsü 10 saniyeye sığmaz, çoğu zaman 30 saniyeye de sığmaz ve uzatılmış bir çalışma süresine rahatça sığar.
Bu size iki tasarım veriyor ve hangisinin doğru olduğu, uzatılmış çalışma sürelerinin açık olup olmadığına bağlı:
- İki adım artı bir gecikme. Her planda çalışır. Gönder, bekle, sorgula. Zap geçmişi net okunur ve yavaş bir çözüm çalıştırmayı öldürmez.
- Uzatılmış çalışma süreli tek adım. Daha az hareketli parça ve çözümün tamamı tek yerde. O adımda uzun çalışma süresinin açık olmasını gerektirir.
Adım 1: CAPTCHA’yı gönderin ve ID’yi saklayın
Bir Code by Zapier eylemi ekleyin, Python’ı seçin ve sitekey ile sayfa URL’sini adımın giriş alanlarına eşleyin. Giriş değerleri her zaman string olarak şuraya gelir: input_data, ki burada sorun değil, çünkü gönderdiğiniz her şey zaten string.
# Code by Zapier, Python. requests is available; nothing to install.
SOLVER = "http://YOUR_SERVER_IP:8080"
r = requests.post(SOLVER + "/in.php", data={
"key": input_data["api_key"],
"method": "userrecaptcha",
"googlekey": input_data["sitekey"],
"pageurl": input_data["pageurl"],
"json": 1,
})
body = r.json()
if body["status"] != 1:
raise Exception("Submit rejected: " + body["request"])
# Hand the id to the next step.
output = {"captcha_id": body["request"]}Reddedilen bir gönderimde doğru hamle bir istisna fırlatmaktır. Zapier çalıştırmayı hatalı olarak işaretler ve mesajı Zap geçmişinde gösterir; bu, bir hata dizesini zincir boyunca aşağı geçirip üç adım sonra fark etmekten iyidir.
Adım 2: gecikme koyun, sonra token için sorgulama yapın
Bir Delay by Zapier adımı ekleyin ve kısa bir aralıkla Delay For kullanın. Yirmi saniye reCAPTCHA v2 için makul bir alt sınır, çünkü bundan daha erken sorgulama yapmak yalnızca şunu döndürür: CAPCHA_NOT_READY ve Code adımınızın bütçesini asla başarılı olmayacak isteklere harcar.
Sonra sorgulama yapan ikinci bir Code adımı ekleyin. Döngüyü küçük tutun: aralarında bir uyku olan birkaç deneme 30 saniyeye sığar ve yanıt o zamana kadar hazır değilse Zap hata verir; daha uzun bir döngüde oturmak yerine Autoreplay’i açabilirsiniz.
# Code by Zapier, Python. Second step, after Delay For 20 seconds.
import time
SOLVER = "http://YOUR_SERVER_IP:8080"
params = {
"key": input_data["api_key"],
"action": "get",
"id": input_data["captcha_id"],
"json": 1,
}
token = None
# Five tries at 5s stays inside a 30 second step.
for _ in range(5):
body = requests.get(SOLVER + "/res.php", params=params).json()
if body["status"] == 1:
token = body["request"]
break
if body["request"] != "CAPCHA_NOT_READY":
raise Exception(body["request"])
time.sleep(5)
if not token:
raise Exception("Not solved yet. Lengthen the delay ahead of this step.")
output = {"token": token}CAPCHA_NOT_READY T harfi olmadan yazılıyor ve bu, bu yazıdaki bir yazım hatası değil, API’nin kendi yazımı. Geri aldığınız diğer her yanıt gerçek bir hatadır ve Zap’ı durdurmalıdır. Tam liste şurada: CapSkip API dokümantasyonu.
Tek adımlı sürüm
Adımda uzatılmış çalışma süreleri açıkken her iki yarı tek bir eyleme birleşir ve Delay ortadan kalkar. Kod, sorgulama döngüsü genişletilmiş hâliyle yukarıdaki iki bloktur ve dikkat edilecek tek şey, döngünüzün kendi tavanının yapılandırdığınız çalışma süresinin altında kalması; böylece adım, isteğin ortasında öldürülmek yerine sizin yazdığınız bir mesajı fırlatır.
Pencereyi devasa yapmaya karşı bir uyarı: çözülmüş bir token’ın da kendine ait sınırlı bir ömrü var. Bir reCAPTCHA token’ı tek kullanımlıktır ve kabaca iki dakika sonra kabul edilmeyi bırakır, dolayısıyla çözüp sonra beş dakika kuyrukta bekleyen bir Zap, sitenin çoktan geçerli saymayı bıraktığı bir şeyi gönderecektir. Token’ın geçerlilik süresi kesin sayıları anlatıyor. Zap içinde olabildiğince geç çözün ve token’ı kullanan adımı hemen ardına koyun.
Bunun yerine Webhooks by Zapier kullanmak
Gönderimi Webhooks by Zapier ile hiç kod yazmadan yapabilirsiniz. Custom Request veya POST seçin, şuraya yöneltin: /in.php, sonra aynı alanları form verisi olarak gönderin. Yanıt şu şekilde geri gelir: {"status": 1, "request": "<id>"} ve Zapier onu ileri doğru eşleyebileceğiniz alanlara ayrıştırır.
{
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "YOUR_SITEKEY",
"pageurl": "https://example.com/page-with-recaptcha",
"json": 1
}Bunun zorlaştığı yer sorgulama kısmı. Bir webhook tek bir istek yapar, dolayısıyla yanıtın gelip gelmediğine karar vermek için bir Delay ve bir Filter gerekir ve bir Zap kolayca başa dönüp yeniden deneyemez. O yarı için bir Code adımı daha iyi okunur. Tıklamayı yazmaya tercih ediyorsanız gönderim için Webhooks kullanın, sorgulama için her hâlükârda Code kullanın.
Sık görülen hatalar ve anlamları
| Gördüğünüz | Neden | Düzeltme |
|---|---|---|
| Kodunuz zaman aşımına uğradı | 10 veya 30 saniyelik tavanda gönderim ve sorgulama tek adımda | Araya bir Delay koyup iki adıma bölün veya uzatılmış çalışma sürelerini açın |
| Bağlantı reddedildi ya da askıda kalan bir istek | Adım 127.0.0.1 adresini çağırıyor, ki bu Zapier’in kendi konteyneri | Çözücüyü Sunucu moduna alın ve genel IP’sini kullanın |
| ERROR_KEY_DOES_NOT_EXIST | Anahtar doğrulaması açık ve bu Zap’ın anahtarı kayıtlı değil | Uygulama ayarlarından Zap için bir anahtar verin |
| Her denemede CAPCHA_NOT_READY | Sorgulama çok erken başladı veya döngü çok kısa | Sorgulama adımından önceki Delay’i uzatın |
| ERROR_GOOGLEKEY | Sitekey alanı tetikleyiciden boş geldi | Adımın giriş alanlarındaki eşlemeyi kontrol edin |
| Token hedef site tarafından reddedildi | Çözümle kullanım arasında süresi doldu | Çözümü daha sona alın, onu gönderen adımın hemen yanına |
FAQ
CapSkip SDK’yı bir Code adımına kurabilir miyim?
Hayır. Code by Zapier, sabit bir kütüphane kümesiyle ve paket kurulumu olmadan bir sandbox içinde çalışır, dolayısıyla Python ve Node SDK’ları elenir. Ancak requests kütüphanesini içeriyor ve API iki uç noktayla 2captcha uyumlu, yani yukarıdaki kod SDK’nın yapacağı her şeyi yapıyor. Hattınızın bir kısmı sizin kontrolünüzdeki bir yerde çalışıyorsa, CAPTCHA çözme SDK sayfası dört resmi istemciyi anlatıyor.
Zapier barındırılan bir hizmet. Makinemdeki bir çözücüye nasıl erişiyor?
Sunucu modu üzerinden. Çözücü loopback adresi yerine ağ adresinize ya da genel IP’nize bağlanır ve Zapier onu herhangi bir genel API gibi çağırır. Zap’ınızdaki adresin geçerli kalması için ona sabit bir genel IP verin, portu açmadan önce anahtar doğrulamasını açın ve Zap’a kendi anahtarını verin.
Delay adımı ne kadar olmalı?
reCAPTCHA v2 için 20 saniyeden, GeeTest için yaklaşık 5 saniyeden başlayın. Görsel CAPTCHA’lar yeterince hızlı döner; bir saniyelik sorgulamalı tek bir adım genelde onları karşılar. Uzun olması otomatik olarak daha güvenli değil, çünkü token verildiği anda eskimeye başlıyor; o yüzden gecikmeyi hiç yeniden deneme görmeyene kadar artırmak yerine, ara sıra bir yeniden deneme görene kadar azaltın.
Bunun için Zapier mı yoksa kendi barındırdığım bir araç mı kullanmalıyım?
İş akışının geri kalanı zaten orada yaşıyorsa doğru tercih Zapier. CAPTCHA işi asıl olay ise, kendi barındırdığınız bir araç çalışma süresi tavanını tamamen ortadan kaldırır ve çözücüyle özel bir adres üzerinden konuşabilir. n8n rehberi bu şekli anlatıyor ve Wait node’unun benzer bir sınırı yok.
Kısa özet
Zapier’in erişebilmesi için çözücüyü Sunucu modunda çalıştırın, tek bir Code adımında gönderin, yaklaşık 20 saniye bekletin ve ikinci bir adımda sorgulama yapın. Tek adım istiyorsanız uzatılmış çalışma sürelerini açın. Her şeyi sıkı tutun, çünkü token Zap geçmişinizden çok önce sona eriyor. Hangi tasarımı seçerseniz seçin maliyet sabit kalır: zaten sahip olduğunuz bir makinede çalışan bir captcha çözücü size çözüm başına ücret yansıtmaz, yani günde dört yüz kez tetiklenen bir Zap, dört kez tetiklenenle tam olarak aynı maliyeti çıkarır.
