Bỏ qua hình ảnh xác thực bằng Python
Tích hợp gói Python để giải mã captcha tự động trên bất kỳ trang web nào.
Gói Python để tích hợp dễ dàng với API của 2Captcha dịch vụ giải mã captcha để bỏ qua recaptcha , funcaetptest, <solve_geuncaptetca> và giải quyết bất kỳ hình ảnh xác thực nào khác</solve_geuncaptetca>
Được xuất bản trên GitHub là examples của captcha bypass bằng Python và Selenium. Kho lưu trữ chứa các tập lệnh sẵn sàng sử dụng để tự động hóa các quy trình giải captcha, cung cấp tích hợp dễ dàng vào các dự án hiện có.
Bắt đầu nhanhCài đặt
Gói tập lệnh có thể được cài đặt bằng trình cài đặt gói hoặc theo cách thủ công
Pip
Để tự động cài đặt gói thư viện, bạn cần sử dụng giải pháp gói Python tiêu chuẩn - Pip. Tải xuống từ liên kết và cài đặt theo hướng dẫn. Sau khi cài đặt ứng dụng, sử dụng lệnh:
pip3 install 2captcha-python
Chúng tôi mời bạn khám phá kho lưu trữ GitHub của chúng tôi, nơi bạn có thể tìm thấy các thư viện và mô-đun cho tích hợp dễ dàng với API của chúng tôi.
Cấu hình
Mô tả tất cả các thông số cần thiết để cấu hình gói đã cài đặt
Một phiên bản của lớp TwoCaptcha
có thể được tạo như sau:
from twocaptcha import TwoCaptcha
solver = TwoCaptcha('YOUR_API_KEY')
Bạn cũng có thể tùy chỉnh một số tùy chọn cho phiên bản đã tạo:
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)
Tùy chọn phiên bản TwoCaptcha
Lựa chọn | Giá trị mặc định | Sự mô tả |
---|---|---|
Máy chủ | '2captcha.com' | Máy chủ API. Bạn có thể đặt nó thành 'rucaptcha.com' nếu tài khoản của bạn được đăng ký ở đó |
softId | - | ID phần mềm của bạn nhận được sau khi xuất bản trong 2Captcha danh mục phần mềm |
gọi lại | - | URL của máy chủ web của bạn nhận được kết quả nhận dạng hình ảnh xác thực. URL phải được đăng ký lần đầu trong pingback settings trong tài khoản của bạn |
Hết thời gian | 120 | Thời gian chờ thăm dò tính bằng giây cho tất cả các loại hình ảnh xác thực ngoại trừ reCAPTCHA. Xác định thời gian mô-đun cố gắng nhận câu trả lời từ điểm cuối API res.php |
recaptchaTimeout | 600 | Thời gian chờ thăm dò cho reCAPTCHA tính bằng giây. Xác định thời gian mô-đun cố gắng nhận câu trả lời từ điểm cuối API res.php |
pollingInterval | 10 | Khoảng thời gian tính bằng giây giữa các yêu cầu đến điểm cuối API res.php , không nên đặt giá trị dưới 5 giây |
IMPORTANT: khicallback
được xác định cho trường hợpTwoCaptcha
, tất cả các phương thức chỉ trả về ID hình ảnh xác thực và DO KHÔNG thăm dò ý kiến API để lấy kết quả. Kết quả sẽ được gửi đến URL gọi lại. Để nhận câu trả lời theo cách thủ công, hãy sử dụng phương thức getResult
Giải quyết hình ảnh xác nhận
Khi bạn gửi bất kỳ hình ảnh xác thực nào, việc sử dụng hình ảnh xác thực có thể cung cấp các tùy chọn bổ sung để giúp nhân viên của 2Captcha giải quyết vấn đề đó một cách chính xác
Các loại Captcha
Lựa chọn | Giá trị mặc định | Sự mô tả |
---|---|---|
numeric | 0 | Xác định xem hình ảnh xác thực có chứa số hoặc các ký hiệu khác hay không xem thêm thông tin trong tài liệu API |
minLength | 0 | độ dài câu trả lời tối thiểu |
maxLength | 0 | độ dài câu trả lời tối đa |
phrase | 0 | xác định xem c âu trả lời có chứa nhiều từ hay không |
Phân biệt chữ hoa chữ thường | 0 | xác định xem câu trả lời có phân biệt chữ hoa chữ thường không |
calc | 0 | xác định captcha cần tính |
lang | - | xác định ngôn ngữ hình ảnh xác thực, xem danh sách các ngôn ngữ được hỗ trợ |
gợi ý | - | một hình ảnh có gợi ý được hiển thị cho công nhân bằng hình ảnh xác thực |
hintText | - | gợi ý hoặc văn bản nhiệm vụ được hiển thị cho nhân viên bằng hình ảnh xác thực |
- Normal Captca
- TextCaptcha
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- KeyCaptcha
- Capy
- Lưới
- Canvas
- ClickCaptcha
- Quay
Để bỏ qua hình ảnh xác thực thông thường (văn bản bị bóp méo trên hình ảnh), hãy sử dụng phương pháp sau. Phương pháp này cũng có thể được sử dụng để nhận dạng bất kỳ văn bản nào trên hình ảnh.
result = solver.normal('path/to/captcha.jpg', param1=..., ...)
Phương pháp này có thể được sử dụng để bỏ qua hình ảnh xác thực yêu cầu trả lời câu hỏi được cung cấp bằng văn bản rõ ràng.
result = solver.text('If tomorrow is Saturday, what day is today?', param1=..., ...)
Sử dụng phương pháp này để giải reCAPTCHA V2 và lấy mã thông báo để vượt qua bảo vệ.
result = solver.recaptcha(sitekey='6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
url='https://mysite.com/page/with/recaptcha',
param1=..., ...)
Phương pháp này cung cấp trình giải reCAPTCHA V3 và trả về một mã thông báo.
result = solver.recaptcha(sitekey='6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
url='https://mysite.com/page/with/recaptcha',
version='v3',
param1=..., ...)
Phương pháp giải FunCaptcha (Arkoselabs). Trả về một mã thông báo.
result = solver.funcaptcha(sitekey='6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
url='https://mysite.com/page/with/funcaptcha',
param1=..., ...)
Phương pháp giải captcha câu đố GeeTest. Trả về một tập hợp các mã thông báo dưới dạng JSON.
result = solver.geetest(gt='f1ab2cdefa3456789012345b6c78d90e',
challenge='12345678abc90123d45678ef90123a456b',
url='https://www.site.com/page/',
param1=..., ...)
Phương pháp dựa trên mã thông báo để giải KeyCaptcha
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=..., ...)
Phương pháp dựa trên mã thông báo để vượt qua hình ảnh xác thực câu đố Capy.
result = solver.capy(sitekey='PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
url='http://mysite.com/',
api_server='https://jp.api.capy.me/',
param1=..., ...)
Phương pháp lưới ban đầu được gọi là phương pháp reCAPTCHA V2 cũ. Phương pháp này có thể được sử dụng để bỏ qua bất kỳ loại hình ảnh xác thực nào mà bạn có thể áp dụng lưới trên hình ảnh và cần nhấp vào các ô lưới cụ thể. Trả về số của hộp.
Phương pháp canvas có thể được sử dụng khi bạn cần vẽ một đường bao quanh một đối tượng trên hình ảnh. Trả về một tập hợp các tọa độ điểm để vẽ một đa giác.
Phương thức ClickCaptcha trả về tọa độ của các điểm trên hình ảnh captcha. Có thể được sử dụng nếu bạn cần nhấp vào các điểm cụ thể trên hình ảnh.
result = solver.coordinates('path/to/captcha.jpg', param1=..., ...)
Phương pháp này có thể được sử dụng để giải quyết một hình ảnh xác thực yêu cầu xoay một đối tượng. Chủ yếu được sử dụng để vượt qua FunCaptcha. Trả về góc quay.
result = solver.rotate('path/to/captcha.jpg', param1=..., ...)
Các phương pháp khác
Các phương pháp hợp lệ bổ sung được sử dụng trong quá trình làm việc của các tập lệnh chính
send / getResult
Các phương pháp này có thể được sử dụng để gửi captcha thủ công và bỏ phiếu trả lời.
import time
. . . . .
id = solver.send(file='path/to/captcha.jpg')
time.sleep(20)
code = solver.get_result(id)
balance
Sử dụng phương pháp này để lấy số dư tài khoản của bạn.
balance = solver.balance()
report
Sử dụng phương pháp này để báo cáo câu trả lời hình ảnh xác thực tốt hoặc xấu.
solver.report(id, True) # captcha solved correctly
solver.report(id, False) # captcha solved incorrectly
Xử lý lỗi
Các biến thể có thể có của lỗi tiêu chuẩn được dịch vụ trả về khi xử lý yêu cầu
Nếu trường hợp lỗi trình giải mã xác thực sẽ ném ra một ngoại lệ. Điều quan trọng là phải xử lý đúng những trường hợp này. Chúng tôi khuyên bạn nên sử dụng try/except
để xử lý các trường hợp ngoại lệ.
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)
Proxies
Bạn có thể chuyển proxy của mình làm đối số bổ sung cho các phương pháp: recaptcha, funcaptcha và geetest. Proxy sẽ được chuyển tiếp tới API để giải mã xác thực.
proxy={
'type': 'HTTPS',
'uri': 'login:password@IP_address:PORT'
}
Cuộc gọi không đồng bộ
Bạn cũng có thể thực hiện lệnh gọi không đồng bộ với asyncio , ví dụ:
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