πΠΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Π½Π° python: Π»Π΅Π³ΠΊΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ π
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Π½Π° Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ "Selenium". ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
from selenium import webdriver
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΡΠΈ ΠΊ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°
driver_path = "/ΠΏΡΡΡ_ΠΊ_Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ/chromedriver"
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°
driver = webdriver.Chrome(driver_path)
# ΠΡΠΊΡΡΡΠΈΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΊΠ°ΠΏΡΠ΅ΠΉ
driver.get("ΡΡΡΠ»ΠΊΠ°_Π½Π°_ΡΡΡΠ°Π½ΠΈΡΡ_Ρ_ΠΊΠ°ΠΏΡΠ΅ΠΉ")
# ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
captcha_input = driver.find_element_by_id("id_ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°_ΠΊΠ°ΠΏΡΠΈ")
captcha_input.send_keys("ΠΎΡΠ²Π΅Ρ_ΠΊΠ°ΠΏΡΠΈ")
# ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΡΠΌΡ
submit_button = driver.find_element_by_id("id_ΠΊΠ½ΠΎΠΏΠΊΠΈ_ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ")
submit_button.click()
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Selenium Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ Π½Π° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ChromeDriver) ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΡΡ ΠΊ Π½Π΅ΠΌΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ "driver_path". ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΡΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΊΠ°ΠΏΡΠ΅ΠΉ, Π½Π°ΠΉΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΠΏΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² find_element_by_... ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° send_keys(). ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΈ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° find_element_by_... ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° click().
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ Π½Π° Python
ΠΠ°ΠΏΡΠ°, ΠΈΠ»ΠΈ Completely Automated Public Turing test to tell Computers and Humans Apart, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π±ΠΎΡΠΎΠΌ. ΠΠ°ΠΏΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΠ°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΈ Π²Π²Π΅ΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΅ΡΠΈΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π·Π°Π΄Π°ΡΡ. ΠΠ°ΠΊ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Ρ ΠΎΠ΄ ΠΊΠ°ΠΏΡΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Pillow Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΏΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Pillow Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Pillow Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ:
from PIL import Image
import pytesseract
# ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ
captcha_image = Image.open('captcha.png')
# ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»ΡΠΉ ΡΠΎΡΠΌΠ°Ρ
captcha_image = captcha_image.convert('L')
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΠΊΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pytesseract
captcha_text = pytesseract.image_to_string(captcha_image)
# ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ
print(captcha_text)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Pillow. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»ΡΠΉ ΡΠΎΡΠΌΠ°Ρ, ΡΡΠΎΠ±Ρ Π»Π΅Π³ΡΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΡΠ΅ΠΊΡΡ. Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ pytesseract Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ. ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄Π° Π²Π΅Π±-ΡΠΎΡΠΌΡ.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ ΡΠΎΡΡΠΎΠΈΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° TensorFlow, Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ:
import tensorflow as tf
from tensorflow.keras import layers
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈ ΠΎΠ±ΡΡΠ°Π΅ΠΌ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ
model = tf.keras.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(128, 128, 3)),
layers.MaxPooling2D((2, 2)),
layers.Flatten(),
layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(),
metrics=['accuracy'])
# ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ
train_data = ...
train_labels = ...
model.fit(train_data, train_labels, epochs=10)
# ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ
captcha_image = ...
captcha_text = model.predict(captcha_image)
# ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ
print(captcha_text)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ TensorFlow Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΡΠ΅ΠΊΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΊΠ°ΠΏΡΠΈ. ΠΡ ΠΎΠ±ΡΡΠ°Π΅ΠΌ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ°ΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΏΡΠΈ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ API ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠ°ΠΏΡΡ, Π½ΠΎ Ρ Π²Π°Ρ Π½Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ API ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ API, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ Π² ΠΎΡΠ²Π΅Ρ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ API:
import requests
# ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ Π½Π° API ΠΎΠ±Ρ
ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ
response = requests.post('https://captcha-solving-service.com/solve', files={'captcha_image': open('captcha.png', 'rb')})
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΈΠ· ΠΎΡΠ²Π΅ΡΠ° API
captcha_text = response.json()['captcha_text']
# ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ
print(captcha_text)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ requests Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ Π½Π° API ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ. ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠ²Π΅Ρ ΠΎΡ API, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ, ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π½Π° ΡΠΊΡΠ°Π½.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ° ΡΡΠΎΠΌ ΠΌΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌ Π½Π°ΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Pillow Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ°ΠΏΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΊΠ°ΠΏΡΠΈ, ΠΈΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ API ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠΌ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΏΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠ·Π°ΠΊΠΎΠ½Π½ΡΠΌ ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠ°ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΠΈΡ Π·Π°ΠΊΠΎΠ½Π½ΠΎΡΡΠΈ ΠΈ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ».