
Security News
Deno 2.6 + Socket: Supply Chain Defense In Your CLI
Deno 2.6 introduces deno audit with a new --socket flag that plugs directly into Socket to bring supply chain security checks into the Deno CLI.
python-rucaptcha-session-patch
Advanced tools
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±Π°ΠΎΡΡΠΈΠΊΠΎΠ² ΠΠ ΠΈ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ API ΡΠ΅ΡΠ²ΠΈΡΠ° RuCaptcha.
ΠΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Python Π²Π΅ΡΡΠΈΠΈ 3.6+.
pip install python-rucaptcha
git clone https://github.com/AndreiDrang/python-rucaptcha.git
cd python-rucaptcha
python setup.py install
ΠΠΎ Π²ΡΠ΅ΠΌ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ Π² Telegram ΡΠ°Ρ.
v.2.0 - ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ JSON ΠΎΡΠ²Π΅ΡΠ°, ΠΊΠ»ΡΡΠ° Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅(ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ id).
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² errorBody Π΄Π²ΡΡ
ΠΊΠ»ΡΡΠ΅ΠΉ: text(ΡΠ΅ΠΊΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ) ΠΈ id(ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ). Π’Π°Π±Π»ΠΈΡΠ° Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΈ ΠΈΡ
Π½ΠΎΠΌΠ΅ΡΠ°ΠΌΠΈ.
ΠΠ°ΠΌΠ΅Π½Π° errorId ΠΈ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ 1/0 Π½Π° error ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ True(Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°)/False(Π½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ).
v.2.2.1 - ΠΡΠ½Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΊΠ°ΠΏΡΠΈ (ΠΊΠ°ΠΊ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΊ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ) Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ».
v.2.3 - Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²(Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ) ΠΈ Π·Π°ΠΌΠ΅Π½Π° ΠΈΡ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
v.2.4 - ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ callback(pingback) ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ ΠΊΠ°ΠΏΡ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° - CallbackClient. Π ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ(Π½Π° aiohttp) Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ POST-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΡ RuCaptcha, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΌΡΠ»ΡΡΠΎΡ RuCaptcha, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΡΠ»Π°Π΅Ρ ΡΠ΅ ΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠΎ ΠΈ Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅Ρ(ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΊΠ°ΠΏΡΠΈ).
v.2.5 - ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ReCaptcha v3. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ MediaCaptcha ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
v.2.5.3 - ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ contextmanager ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ.
v.2.5.4 - ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ GeeTest ΠΌΠ΅ΡΠΎΠ΄Π°. Π‘ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.
v.2.6.3 - ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Distil ΠΌΠ΅ΡΠΎΠ΄Π°. Π‘ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.
v.2.6.4 - ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ HCaptcha ΠΌΠ΅ΡΠΎΠ΄Π°. Π‘ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.
v.2.6.5 - ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ CapyPuzzle ΠΌΠ΅ΡΠΎΠ΄Π°. Π‘ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.
v.3.0 - Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΡ ΠΎΡΠΈΠ±ΠΈΠΎΠΊ ΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΎ Π½ΠΈΡ .
{
"errorBody":
{
"text": "some text",
"id": 1
}
}
{
"errorBody": "ERROR_NAME"
}
v.4.0 - ΠΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
0.Π Π°Π±ΠΎΡΠ° ΡΠ΅ΡΠ΅Π· callback(pingback).
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ Π΅ΠΌΠ΅
ΠΡΠ°ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
import requests
from python_rucaptcha import ImageCaptcha, RuCaptchaControl, CallbackClient
# ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠ»ΡΡ ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠ° RuCaptcha, ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°
RUCAPTCHA_KEY = ""
# Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ
image_link = ""
# Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ Π½ΡΠΆΠ½ΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ IP/URL(Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ IP, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΠ΅):
RuCaptchaControl.RuCaptchaControl(rucaptcha_key=RUCAPTCHA_KEY).additional_methods(action='add_pingback', addr='http://85.255.8.26/')
# ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π°Π΄ΡΠ΅ΡΠΎΠ²
answer = RuCaptchaControl.RuCaptchaControl(rucaptcha_key=RUCAPTCHA_KEY).additional_methods(action='get_pingback', json=1)
print(answer)
# Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ(15+ Π·Π½Π°ΠΊΠΎΠ² ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ) Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ
queue_name = 'ba86e77f9007_andrei_drang_7436e744_cute_queue'
# ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π° callback ΡΠ΅ΡΠ²Π΅ΡΠ΅
answer = requests.post(f'http://85.255.8.26:8001/register_key', json={'key':queue_name, 'vhost': 'rucaptcha_vhost'})
print(answer.text)
# ΡΠΎΠ·Π΄Π°ΡΠΌ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ²ΠΈΡΠ΅ RuCaptcha ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ `pingback` ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ
task_creation_answer = ImageCaptcha.ImageCaptcha(rucaptcha_key=RUCAPTCHA_KEY,
pingback=f'85.255.8.26:8001/rucaptcha/image_captcha/{queue_name}',
).captcha_handler(captcha_link=image_link)
print(task_creation_answer)
# ΠΠ²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ: ΠΊΠ΅Ρ(ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡ 1 ΡΠ°Ρ) ΠΈ rabbitmq ΠΎΡΠ΅ΡΠ΅Π΄Ρ(ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ)
# ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΠΆΠ΄ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ ΠΈΠ· ΠΊΠ΅ΡΠ°
callback_cache_response = CallbackClient.CallbackClient(task_id=task_creation_answer.get('id')).captcha_handler()
# ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΠΆΠ΄ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ ΠΈΠ· RabbitMQ queue
callback_queue_response = CallbackClient.CallbackClient(task_id=task_creation_answer.get('id'), queue_name=queue_name, call_type='queue').captcha_handler()
print(callback_cache_response)
print(callback_queue_response)
ΠΠ΅Π±ΠΎΠ»ΡΡΠ°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ-ΠΏΠ°ΠΌΡΡΠΊΠ° ΠΏΠΎ ΡΠ°Π³Π°ΠΌ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ POST-Π·Π°ΠΏΡΠΎΡΡ, ΠΏΠ°ΡΡΠΈΡΡ ΠΈΡ , ΠΈ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ ΠΏΡΠΎΡΡΡ, Π½ΡΠΆΠ½ΡΡ Π²Π°ΠΌ, ΠΌΠ°Π³ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° aiohttp.
ΠΡΠ΅ ΡΠ΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΡΠΌΡΠ»ΠΈΡΡΡ POST-Π·Π°ΠΏΡΠΎΡΡ ΠΎΡ RuCaptcha ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Π½ΠΈΠΉ Π΄Π»Ρ callback(pingback) ΡΠΏΠΎΡΠΎΠ±Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ.
1.Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ(Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅).
from python_rucaptcha import ImageCaptcha
# ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠ»ΡΡ ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠ° RuCaptcha, ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°
RUCAPTCHA_KEY = ""
# Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ
image_link = ""
# ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ JSON ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ
user_answer = ImageCaptcha.ImageCaptcha(rucaptcha_key=RUCAPTCHA_KEY).captcha_handler(captcha_link=image_link)
if not user_answer['error']:
# ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
print(user_answer['captchaSolve'])
print(user_answer['taskId'])
elif user_answer['error']:
# Π’Π΅Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ
print(user_answer ['errorBody'])
print(user_answer ['errorBody'])
2.Π Π΅ΡΠ΅Π½ΠΈΠ΅ KeyCaptcha(ΠΏΠ°Π·Π»-ΠΊΠ°ΠΏΡΠ°).
from python_rucaptcha import KeyCaptcha
# ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠ»ΡΡ ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠ° RuCaptcha, ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°
RUCAPTCHA_KEY = ''
answer = KeyCaptcha.KeyCaptcha(rucaptcha_key=RUCAPTCHA_KEY) \
.captcha_handler(key_params = {
's_s_c_user_id':15,
's_s_c_session_id':'8f460599bebe02cb0dd096b1fe70b089',
's_s_c_web_server_sign':'edd2c221c05aece19f6db93a36b42272',
's_s_c_web_server_sign2':'15989edaad1b4dc056ec8fa05abc7c9a',
'pageurl':'https://www.keycaptcha.com/signup/'
}
)
# ΠΊΠ°ΠΏΡΠ° ΡΠ΅ΡΠ΅Π½Π° Π²Π΅ΡΠ½ΠΎ, ΠΎΡΠΈΠ±ΠΊΠ° = 0
if not answer['error']:
# ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
print(answer['captchaSolve'])
print(answer['taskId'])
# Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎΡΠΈΠ±ΠΊΠ° = 1
elif answer['error']:
# Π’Π΅Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ
print(answer['errorBody'])
3.Π Π΅ΡΠ΅Π½ΠΈΠ΅ ReCaptcha v2.
from python_rucaptcha import ReCaptchaV2
# ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠ»ΡΡ ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠ° RuCaptcha, ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°
RUCAPTCHA_KEY = ""
# G-ReCaptcha ΠΊΠ»ΡΡ ΡΠ°ΠΉΡΠ°
SITE_KEY = ""
# Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΊΠ°ΠΏΡΡΠΉ
PAGE_URL = ""
# ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ JSON ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ
user_answer = ReCaptchaV2.ReCaptchaV2(rucaptcha_key=RUCAPTCHA_KEY).captcha_handler(site_key=SITE_KEY,
page_url=PAGE_URL)
if not user_answer['error']:
# ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
print(user_answer['captchaSolve'])
print(user_answer['taskId'])
elif user_answer['error']:
# Π’Π΅Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ
print(user_answer ['errorBody'])
print(user_answer ['errorBody'])
4.Π Π΅ΡΠ΅Π½ΠΈΠ΅ ReCaptcha v3.
from python_rucaptcha import ReCaptchaV3
# ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠ»ΡΡ ΠΎΡ ΡΠ΅ΡΠ²ΠΈΡΠ° RuCaptcha, ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°
RUCAPTCHA_KEY = ""
# G-ReCaptcha ΠΊΠ»ΡΡ ΡΠ°ΠΉΡΠ°
SITE_KEY = ""
# Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΊΠ°ΠΏΡΡΠΉ
PAGE_URL = ""
# ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° action, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π½Π°ΡΠ»ΠΈ Π² ΠΊΠΎΠ΄Π΅ ΡΠ°ΠΉΡΠ°
ACTION = 'verify'
# Π’ΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΉΡΠΈΠ½Π³Π° (score) ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊΠ°, ΠΎΡ 0.1(ΡΠΎΠ±ΠΎΡ) Π΄ΠΎ 0.9(ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΡΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ)
MIN_SCORE = 0.4
# ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ JSON ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ
user_answer = ReCaptchaV3.ReCaptchaV3(
rucaptcha_key=RUCAPTCHA_KEY,
action = ACTION,
min_score = MIN_SCORE).captcha_handler(
site_key=SITE_KEY,
page_url=PAGE_URL
)
if not user_answer['error']:
# ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
print(user_answer['captchaSolve'])
print(user_answer['taskId'])
print(user_answer['user_check'])
print(user_answer['user_score'])
elif user_answer['error']:
# Π’Π΅Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ
print(user_answer ['errorBody'])
print(user_answer ['errorBody'])
5.Π Π΅ΡΠ΅Π½ΠΈΠ΅ RotateCaptcha(ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅).
6.Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΊΠ°ΠΏΡΠΈ.
from python_rucaptcha import TextCaptcha
# ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠ»ΡΡ ΠΎΡ ΡΡΠΊΠ°ΠΏΡΠΈ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°
RUCAPTCHA_KEY = ''
# ΠΠΎΠΏΡΠΎΡ
text_question = 'ΠΡΠ»ΠΈ Π·Π°Π²ΡΡΠ° ΡΡΠ±Π±ΠΎΡΠ°, ΡΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π΄Π΅Π½Ρ?'
user_answer = TextCaptcha.TextCaptcha(rucaptcha_key = RUCAPTCHA_KEY).captcha_handler(captcha_text = text_question)
if not user_answer['error']:
# ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
print(user_answer['captchaSolve'])
print(user_answer['taskId'])
elif user_answer['error']:
# Π’Π΅Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ
print(user_answer ['errorBody'])
print(user_answer ['errorBody'])
from python_rucaptcha import FunCaptcha
# ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠ»ΡΡ ΠΎΡ ΡΡΠΊΠ°ΠΏΡΠΈ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°
RUCAPTCHA_KEY = ''
'''
Π‘ΡΡΠ°Π½ΠΈΡΠ° Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ FunCaptch:
https://www.funcaptcha.com/demo
ΠΠ°Π½Π½ΡΠ΅ Π²Π·ΡΡΡΠ΅ ΠΈΠ· ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ ΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ°ΠΏΡΠ΅:
'''
public_key = 'DE0B0BB7-1EE4-4D70-1853-31B835D4506B'
pageurl = 'https://www.funcaptcha.com/demo'
answer = FunCaptcha.FunCaptcha(rucaptcha_key = RUCAPTCHA_KEY).captcha_handler(public_key=public_key, page_url=pageurl)
if not answer['error']:
# ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
print(answer['captchaSolve'])
print(answer['taskId'])
elif answer['error']:
# Π’Π΅Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ
print(answer ['errorBody'])
from python_rucaptcha.RuCaptchaControl import RuCaptchaControl
# ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠ»ΡΡ ΠΎΡ ΡΡΠΊΠ°ΠΏΡΠΈ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°
RUCAPTCHA_KEY = ''
JsSha1 = "af2d0557c23ff2d8f40ccf4bec57e480704634e9"
JsUri = "http://www.targetwebsite.com/pvvhnzyazwpzgkhv.js"
JsData = "IWZ1bmN0fewfwefwefwef9905j0g4905jh9046hj3cpCg=="
answer = RuCaptchaControl(rucaptcha_key=RUCAPTCHA_KEY).additional_methods(
action="getbalance"
)
if not answer["error"]:
print("Your balance is: ", answer["serverAnswer"], " rub.")
elif answer["error"]:
# Π’Π΅Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ
print(answer["errorBody"])
# ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΆΠ°Π»ΠΎΠ±Ρ Π½Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅ΡΡΠ½Π½ΡΡ ΠΊΠ°ΠΏΡΡ ΠΏΠΎΠ΄ ID "666"
wrong_captcha_id = 666
answer = RuCaptchaControl(rucaptcha_key=RUCAPTCHA_KEY).additional_methods(
action="reportbad", id=wrong_captcha_id
)
# ΠΡΠ»ΠΈ Π·Π°ΡΠ²ΠΊΠ° ΠΏΡΠΈΠ½ΡΡΠ°
if not answer["error"]:
print("ΠΠ°ΡΠ²ΠΊΠ° ΠΏΡΠΈΠ½ΡΡΠ°.")
# ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°
elif answer["error"]:
print(answer["errorBody"])
from python_rucaptcha.HCaptcha import HCaptcha
RUCAPTCHA_KEY = ''
website_link = "https://secure2.e-konsulat.gov.pl/Uslugi/RejestracjaTerminu.aspx?IDUSLUGI=1&IDPlacowki=94"
data_sitekey = "39fccce0-e3e3-4f9d-a942-ea415c102beb"
answer = HCaptcha(rucaptcha_key=RUCAPTCHA_KEY).captcha_handler(
site_key=data_sitekey, page_url=website_link
)
if not answer['error']:
# ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
print(answer['captchaSolve'])
print(answer['taskId'])
elif answer['error']:
# Π’Π΅Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ
print(answer ['errorBody'])
from python_rucaptcha.CapyPuzzle import CapyPuzzle
RUCAPTCHA_KEY = ''
captchakey="PUZZLE_Cme4hZLjuZRMYC3uh14C52D3uNms5w"
page_url="https://www.capy.me/account/register/"
answer = CapyPuzzle(rucaptcha_key=RUCAPTCHA_KEY).captcha_handler(
captchakey=captchakey, page_url=page_url
)
if not answer['error']:
# ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
print(answer['captchaSolve'])
print(answer['taskId'])
elif answer['error']:
# Π’Π΅Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ
print(answer ['errorBody'])
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΊΠ°ΠΏΡΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ±ΡΠ°Π½Ρ Π²ΡΠ΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ ΡΠΈΠΏΡ ΠΊΠ°ΠΏΡΠΈ, Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ².
Π ΠΎΠ±ΠΎΠΈΡ ΡΡΡΠ»ΠΊΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π²Π°Π»ΠΈΠ΄Π½ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ
FAQs
Python 3.6+ RuCaptcha library with AIO module.
We found that python-rucaptcha-session-patch demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Deno 2.6 introduces deno audit with a new --socket flag that plugs directly into Socket to bring supply chain security checks into the Deno CLI.

Security News
New DoS and source code exposure bugs in React Server Components and Next.js: whatβs affected and how to update safely.

Security News
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.