Python'da captcha'yı atlayın

Python'da captcha'yı atlayın

Herhangi bir sitede captcha'yı otomatik olarak çözmek için Python paketini entegre edin.

reCAPTCHA, hCaptcha, Arkose captcha, GeetestAtlamak için 2Captcha captcha çözme hizmetinin API'si ile kolay entegrasyon için Python paketi ve diğer captcha'ları çözün

GitHub'da yayınlanan examples Python ve Selenium kullanarak captcha bypass. Depo, captcha çözme süreçlerini otomatikleştirmek için kullanıma hazır komut dosyaları içerir ve mevcut projelere kolay entegrasyon sağlar.

Hızlı başlangıç

Kurulum

Komut dosyası paketi, paket yükleyici kullanılarak veya manuel olarak kurulabilir.

Pip

Bir kitaplık paketini otomatik olarak kurmak için standart Python paket çözümünü - Pip'i kullanmanız gerekir. bağlantısından indirin ve talimatlara göre kurun. Uygulamayı yükledikten sonra şu komutu kullanın:

pip3 install 2captcha-python

Sizi, aşağıdakiler için kitaplıklar ve modüller bulabileceğiniz GitHub depomuzu keşfetmeye davet ediyoruz. API'miz ile kolay entegrasyon.

Yapılandırma

Kurulu paketi yapılandırmak için gerekli tüm parametrelerin açıklaması

TwoCaptcha sınıfının bir örneği şu şekilde oluşturulabilir:

from twocaptcha import TwoCaptcha

solver = TwoCaptcha('YOUR_API_KEY')

Ayrıca, oluşturulan örnek için bazı seçenekleri özelleştirebilirsiniz:

config = {
            'server':           '2captcha.com',
            'apiKey':           'YOUR_API_KEY',
            'softId':            123,
            'callback':         'https://your.site/result-receiver',
            'defaultTimeout':    120,
            'recaptchaTimeout':  600,
            'pollingInterval':   10,
        }
solver = TwoCaptcha(**config)
TwoCaptcha örnek seçenekleri
SeçenekVarsayılan değerTanım
sunucu'2captcha.com'API sunucusu. Hesabınız orada kayıtlıysa bunu 'rucaptcha.com' olarak ayarlayabilirsiniz
softId-2Captcha yazılım kataloğunda yayınladıktan sonra elde edilen yazılım kimliğiniz
callback-Captcha tanıma sonucunu alan web sunucunuzun URL'si. URL önce hesabınızın pingback ayarlarına kaydedilmelidir.
varsayılanZaman aşımı120reCAPTCHA dışındaki tüm captcha türleri için saniye cinsinden yoklama zaman aşımı. Modülün yanıtı res.php API uç noktasından ne kadar süreyle almaya çalıştığını tanımlar.
recaptchaZamanaşımı600Saniye cinsinden reCAPTCHA için yoklama zaman aşımı. Modülün yanıtı res.php API uç noktasından ne kadar süreyle almaya çalıştığını tanımlar.
yoklamaAralığı10res.php API uç noktasına yapılan istekler arasındaki saniye cinsinden aralık, değerlerin 5 saniyeden kısa ayarlanması önerilmez
ÖNEMLİ: callback, TwoCaptcha örneği için tanımlandıktan sonra, tüm yöntemler yalnızca captcha kimliğini ve DO'yu döndürür Sonucu almak için API'yi yoklamayın. Sonuç, geri arama URL'sine gönderilecektir. Cevabı manuel olarak almak için Sonucu al yöntemini kullanın.

Captcha'yı çöz

Herhangi bir resim tabanlı captcha gönderdiğinizde, 2Captcha çalışanlarının sorunu düzgün bir şekilde çözmesine yardımcı olacak ek seçenekler sunabilir.

Captcha seçenekleri
SeçenekVarsayılan değerTanım
sayısal0Captcha'nın sayısal veya başka simgeler içerip içermediğini tanımlar API belgelerinde daha fazla bilgi görün
minUzunluk0minimum cevap uzunluğu
maksUzunluk0maksimum cevap uzunluğu
ifade0cevabın birden fazla kelime içerip içermediğini tanımlar
harfe duyarlı0cevabın büyük/küçük harfe duyarlı olup olmadığını tanımlar
hesapla0captcha'yı tanımlar hesaplama gerektirir
dil-captcha dilini tanımlar, desteklenen dillerin listesine bakın
hintImg-captcha ile çalışanlara gösterilen ipucu içeren bir resim
ipucu Metin-captcha ile çalışanlara gösterilen ipucu veya görev metni
basitCaptcha

Normal bir captcha'yı (görüntüdeki bozuk metin) atlamak için aşağıdaki yöntemi kullanın. Bu yöntem aynı zamanda görüntüdeki herhangi bir metni tanımak için de kullanılabilir.

metinCaptcha

Bu yöntem, açık metin olarak sağlanan bir soruyu yanıtlamayı gerektiren bir captcha'yı atlamak için kullanılabilir.

recaptchaV2

reCAPTCHA V2'yi çözmek ve korumayı atlamak için bir belirteç almak için bu yöntemi kullanın.

result = solver.recaptcha(sitekey='6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
  url='https://mysite.com/page/with/recaptcha',
  param1=..., ...)
recaptchaV3

Bu yöntem, reCAPTCHA V3 çözücü sağlar ve bir belirteç döndürür.

result = solver.recaptcha(sitekey='6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
  url='https://mysite.com/page/with/recaptcha',
  version='v3',
  param1=..., ...)
funCaptcha

FunCaptcha (Arkoselabs) çözme yöntemi. Bir belirteç döndürür.

result = solver.funcaptcha(sitekey='6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
  url='https://mysite.com/page/with/funcaptcha',
  param1=..., ...)
geeTest

GeeTest bulmacası captcha'yı çözme yöntemi. JSON olarak bir dizi belirteç döndürür.

result = solver.geetest(gt='f1ab2cdefa3456789012345b6c78d90e',
  challenge='12345678abc90123d45678ef90123a456b',
  url='https://www.site.com/page/',
  param1=..., ...)
hCaptcha

hCaptcha meydan okumasını çözmek için bu yöntemi kullanın. Captcha'yı atlamak için bir belirteç döndürür.

result = solver.hcaptcha(sitekey='10000000-ffff-ffff-ffff-000000000001',
  url='https://www.site.com/page/', 
  param1=..., ...)
keyCaptcha

KeyCaptcha'yı çözmek için belirteç tabanlı yöntem.

result = solver.keycaptcha(s_s_c_user_id=10,
    s_s_c_session_id='493e52c37c10c2bcdf4a00cbc9ccd1e8',
    s_s_c_web_server_sign='9006dc725760858e4c0715b835472f22-pz-',
    s_s_c_web_server_sign2='2ca3abe86d90c6142d5571db98af6714',
    url='https://www.keycaptcha.ru/demo-magnetic/', 
    param1=..., ...)
capy

Capy bulmacası captcha'sını atlamak için jeton tabanlı yöntem.

result = solver.capy(sitekey='PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
  url='http://mysite.com/',
  api_server='https://jp.api.capy.me/',
  param1=..., ...)
grid

Grid yöntemi orijinal olarak Eski reCAPTCHA V2 yöntemi olarak adlandırılır. Yöntem, görüntüye bir ızgara uygulayabileceğiniz ve belirli ızgara kutularına tıklamanız gereken herhangi bir tür captcha'yı atlamak için kullanılabilir. Kutu numaralarını döndürür.

result = solver.grid('path/to/captcha.jpg', param1=..., ...)
canvas

Kanvas yöntemi, resim üzerinde bir nesnenin çevresine bir çizgi çizmeniz gerektiğinde kullanılabilir. Bir çokgen çizmek için bir dizi noktanın koordinatlarını döndürür.

result = solver.canvas('path/to/captcha.jpg', param1=..., ...)
clickCaptcha

ClickCaptcha yöntemi, captcha görüntüsündeki noktaların koordinatlarını döndürür. Resmin belirli noktalarına tıklamanız gerekirse kullanılabilir

result = solver.coordinates('path/to/captcha.jpg', param1=..., ...)
rotateCaptcha

Bu yöntem, bir nesneyi döndürmeyi isteyen bir captcha'yı çözmek için kullanılabilir. Çoğunlukla FunCaptcha'yı atlamak için kullanılır. Dönme açısını döndürür.

result = solver.rotate('path/to/captcha.jpg', param1=..., ...)

Diğer metodlar

Ana komut dosyalarının çalışması sırasında kullanılan ek geçerli yöntemler

send / getResult

Bu yöntemler, manuel captcha gönderimi ve yanıt yoklaması için kullanılabilir.

import time
. . . . . 

id = solver.send(file='path/to/captcha.jpg')
time.sleep(20)

code = solver.get_result(id)

balance

Hesabınızın bakiyesini almak için bu yöntemi kullanın.

balance = solver.balance()

report

İyi veya kötü captcha yanıtını bildirmek için bu yöntemi kullanın.

solver.report(id, True) # captcha solved correctly
solver.report(id, False) # captcha solved incorrectly

Hata yönetimi

İstekler işlenirken hizmet tarafından döndürülen standart hataların olası çeşitleri

Bir hata durumunda, captcha çözücü bir istisna atar. Bu vakaları uygun şekilde ele almak önemlidir. İstisnaları işlemek için dene/ayır kullanmanızı öneririz.

Try:
    result = solver.text('If tomorrow is Saturday, what day is today?')
Except ValidationException as e:
    # invalid parameters passed
  print(e)
Except NetworkException as e:
  # network error occurred
  print(e)
Except ApiException as e:
  # api respond with error
  print(e)
Except TimeoutException as e:
  # captcha is not solved so far
  print(e)

proxy'ler

Proxy'nizi yöntemler için ek argüman olarak geçebilirsiniz: recaptcha, funcaptcha ve geetest. Proxy, captcha'yı çözmek için API'ye iletilecektir.

proxy={
    'type': 'HTTPS',
    'uri': 'login:password@IP_address:PORT'
}

Zaman uyumsuz çağrılar

asyncio ile de zaman uyumsuz aramalar yapabilirsiniz, örneğin:

import asyncio
import concurrent.futures
from twocaptcha import TwoCaptcha

captcha_result = await captchaSolver(image)

async def captchaSolver(image):
    loop = asyncio.get_running_loop()
    with concurrent.future.ThreadPoolExecutor() as pool:
        result = await loop.run_in_executor(pool, lambda: TwoCaptcha(API_KEY).normal(image))
        return result

Hizmet API'si ile entegrasyon için diğer diller