
Anh Tuan
Data Science Expert
Đã xuất bản Oct 30, 2026
Đã cập nhật Oct 30, 2026 · đọc tối thiểu

ERROR_INVALID_TASK_DATA nghĩa là dữ liệu task gửi lên không đúng; errorDescription trả về là điểm bắt đầu để chẩn đoán.Khi một request CAPTCHA thất bại trước khi trả về kết quả dùng được, rất dễ bị cám dỗ chỉnh nhiều thiết lập cùng lúc. Với ERROR_INVALID_TASK_DATA, bước tốt hơn là giữ lại response và kiểm tra request thực tế đã đến API.
CapSolver mô tả lỗi này là dữ liệu task gửi lên không chính xác và hướng người dùng đến mô tả lỗi. Mã lỗi tự thân không chỉ ra một trường thiếu mang tính “phổ quát”. Loại task được chọn, các input bắt buộc và thông điệp cụ thể từ server sẽ quyết định cần điều tra gì.
Hướng dẫn này tập trung vào chẩn đoán request. Nó không khẳng định mọi request sai định dạng đều sinh ra đúng mã lỗi này, cũng không khẳng định API luôn kiểm tra các trường theo một thứ tự cố định.
Nó cho biết dữ liệu task gửi lên không chấp nhận được đối với request đang xử lý.
Tài liệu lỗi chính thức liệt kê ERROR_INVALID_TASK_DATA tách biệt với các lỗi loại task không được hỗ trợ, dữ liệu ảnh không hợp lệ, lỗi xác thực và lỗi giải CAPTCHA. Hãy giữ nguyên đầy đủ errorCode và errorDescription thay vì gom mọi lỗi về thành “CAPTCHA failed”.
API trực tiếp dùng errorId để báo lỗi. Nếu response báo lỗi, đừng tiếp tục như thể đã có taskId hoặc solution hợp lệ. Hãy rẽ ngay sang nhánh chẩn đoán.
Một tham số API có tên, kiểu giá trị và vị trí trong request. Một giá trị có thể có ý nghĩa với ứng dụng của bạn nhưng vẫn sai với giao diện nếu nó nằm dưới key sai hoặc được serialize với kiểu JSON không đúng.
Ví dụ, một lớp bọc (wrapper) tool có thể nhận website_url, trong khi task trực tiếp dùng websiteURL. Không có cách viết nào “đúng cho mọi nơi”; mỗi cách thuộc về giao diện riêng. Việc điều tra lỗi phải bắt đầu bằng xác định code của bạn đang gọi giao diện nào.
Lưu lại mã lỗi, mô tả, loại task và bản payload cuối cùng đã được ẩn bớt thông tin nhạy cảm từ chính lần thất bại đó.
Kiểm tra object sau khi ứng dụng đã áp dụng cấu hình, giá trị mặc định và serialize. Một biến trông có vẻ đúng ở đầu script không chứng minh rằng HTTP client đã gửi cùng cấu trúc đó.
Với log thường xuyên, hãy bỏ key tài khoản, toàn bộ giá trị solution, cookie và dữ liệu trang nhạy cảm. Giữ lại tên tham số và thông tin kiểu an toàn. Nếu support cần tham chiếu task, hãy gắn nó với đúng lần thử tương ứng thay vì trộn chi tiết từ nhiều lần retry.
Một ghi chú gỡ lỗi hữu ích sẽ chỉ rõ endpoint, loại task, các tên trường xuất hiện, kiểu JSON và nội dung lỗi chính xác. Nó cũng nêu rõ request được gửi trực tiếp, sinh ra từ SDK, hay được dịch từ một lệnh gọi tool MCP. Thông tin về giao diện thường giải thích được vì sao các trường có vẻ hợp lệ lại bị từ chối.
Đừng paste nguyên request chưa ẩn thông tin vào issue công khai hoặc prompt của model chỉ để dễ debug. Hãy giữ bản chẩn đoán ở kênh nội bộ phù hợp.
Với request trực tiếp createTask, hãy so sánh object ngoài cùng với tài liệu createTask.
JSON sau minh họa hình dạng request dựa trên task reCAPTCHA v2 proxyless đã được tài liệu hóa. Nó dùng thông tin đăng nhập và giá trị trang dạng placeholder; không phải request thật hay ví dụ thử thách dùng được.
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": "https://example.com/authorized-form",
"websiteKey": "PUBLIC_SITE_KEY_FROM_THAT_PAGE"
}
}
Ở đây, clientKey nằm ngoài task, còn input riêng của task nằm bên trong. Giá trị task là một object JSON, không phải một chuỗi chứa JSON đã escape.
Hình dạng này đã được parse và so với bảng tham số reCAPTCHA v2 hiện tại. Không có request giải CAPTCHA nào được gửi với các placeholder này. Request thật cần key của bạn, một trang được phép dùng và tham số thử thách thực tế của nó.
Hãy so sánh cấu trúc trước. Nếu builder của bạn vô tình biến task thành một chuỗi có ngoặc kép, thì đổi site key cũng không sửa được “phong bì”. Nếu body đang ở dạng form-encoded trong khi client code của bạn nghĩ nó là JSON, hãy kiểm tra đường đi serialize trước khi sửa các giá trị liên quan đến thử thách.
Dùng bảng tham số đúng cho biến thể task thực tế, thay vì trộn trường từ nhiều ví dụ.
| Cần kiểm tra gì | Câu hỏi cần hỏi | Cách sửa khi xác nhận có sai lệch |
|---|---|---|
| Loại task | Giao diện này có chấp nhận đúng giá trị type này không? | Dùng type được tài liệu hóa cho thử thách đang thấy |
| Cách viết tên trường | Key gửi ra có khớp với hợp đồng API không? | Sửa key trong builder của request |
| Giá trị bắt buộc | Có thiếu trường bắt buộc, rỗng hoặc vô tình là null không? | Cung cấp giá trị thực từ trang/ cấu hình được phép |
| Kiểu JSON | Một object có đang bị gửi thành chuỗi, hoặc boolean thành text không? | Sửa serialize và kiểu giá trị |
| Trường lồng nhau | Trường có nằm trong object mà tài liệu chỉ rõ không? | Sửa lại vị trí, không đoán thêm trường |
| Ngữ cảnh thử thách | URL và public key có mô tả cùng một thử thách hiện tại không? | Lấy lại input từ đúng trang định dùng |
Đây là thứ tự rà soát, không phải tuyên bố về thứ tự kiểm tra của server. Mô tả lỗi có thể trỏ thẳng đến vấn đề cụ thể hơn; hãy theo manh mối đó trước.
Tránh thêm tất cả tham số tùy chọn “cho chắc”. Những phỏng đoán dư thừa có thể làm request khó hiểu hơn. Bắt đầu từ các trường bắt buộc trong tài liệu, rồi thêm những trường cần thiết cho biến thể thực tế. Một trường cần cho họ CAPTCHA này có thể hoàn toàn vô nghĩa với họ khác.
Nếu một trường là có điều kiện, hãy đọc kỹ điều kiện. Đừng bịa ra giá trị trống chỉ để object trông có vẻ “đủ ô”. Ví dụ, tài liệu reCAPTCHA v2 riêng giải thích ánh xạ cho biến thể cụ thể; điều đó không có nghĩa bạn nên thêm bừa một giá trị s vào mọi request.
Nhập Mã Thưởng CapSolver
Tăng ngân sách automation ngay lập tức!
Dùng mã thưởng CAP26 khi nạp tiền vào tài khoản CapSolver để nhận thêm 5% bonus cho mỗi lần nạp — không giới hạn.
Đổi mã ngay trong Bảng điều khiển CapSolver
Hãy kiểm tra hợp đồng (contract) tại biên mà ứng dụng bạn thực sự dùng.
Tài liệu dịch vụ MCP mô tả các lệnh gọi tool, còn tài liệu API trực tiếp mô tả các object task HTTP. Một tham số hàm trong SDK hoặc schema của tool không tự động trở thành key cùng tên trong payload REST.
Giả sử ứng dụng của bạn nhận website_url từ một agent. Nếu nó gọi một tool MCP quảng cáo tham số đó, cách viết này có thể là thích hợp. Nếu nó xây một task reCAPTCHA trực tiếp, builder của request phải sinh trường websiteURL như tài liệu. Copy nguyên tham số từ tool vào task sẽ bỏ qua bước ánh xạ cần thiết.
Tương tự, một “type” được adapter của agent quảng cáo không nhất thiết là tên lớp task REST. Hãy kiểm tra schema hiện tại và đường triển khai của adapter thay vì mượn tên lớp từ một ví dụ không liên quan.
Đặt một bảng ánh xạ nhỏ trong code tích hợp và test nó cục bộ. Một bài test serialize có thể xác nhận chương trình của bạn sinh ra đúng hình dạng JSON. Nó không xác nhận site key là đúng, tài khoản được phép hay việc giải thực tế sẽ thành công.
Với Python, tài liệu JSON chuẩn giải thích cách dictionary, string, boolean và null được serialize. Với JavaScript, tài liệu JSON.stringify giúp xác định chỗ một object bị biến thành chuỗi JSON. Hãy dùng API body JSON của HTTP client thay vì serialize cùng object hai lần.
Thực hiện một chỉnh sửa dựa trên bằng chứng, gửi lại request đã chỉnh, rồi kiểm tra response mới trước khi đổi thêm thứ khác.
Nếu task được chấp nhận và trả về mã định danh bất đồng bộ, hãy dùng flow getTaskResult như tài liệu. Đừng tiếp tục tạo thêm task trong khi đang đợi request hợp lệ đầu tiên hoàn thành.
Một mã lỗi mới là một bằng chứng mới. Ví dụ, lỗi task không được hỗ trợ nên chuyển hướng điều tra sang loại task chấp nhận được, trong khi lỗi parse ảnh nên chuyển sang ảnh gửi lên. Đừng cứ xử lý mọi response như lỗi dữ liệu ban đầu.
Nếu mô tả cho biết có giới hạn dịch vụ hoặc cách dùng không được hỗ trợ, thì chỉnh các tham số không liên quan không phải là giải pháp thích hợp. Hãy dừng thử và giải quyết giới hạn đó qua kênh hỗ trợ chính thức.
Khi dịch vụ trả về solution, trình duyệt hoặc ứng dụng vẫn phải sử dụng và xác thực nó cho thao tác mong muốn. Việc request được sửa chỉ chứng minh rằng lỗi input đã được xử lý; nó không đảm bảo các trường form khác hay rule nghiệp vụ không còn lỗi.
Gửi một bản tái tạo tối thiểu, đã ẩn thông tin, nhưng giữ nguyên hình dạng request lỗi và nội dung lỗi chính xác.
Bao gồm loại task, giao diện dùng, phiên bản SDK hoặc package (nếu có), tên và kiểu các trường an toàn, mã lỗi và mô tả, thời điểm thực hiện. Nếu có task reference, hãy gửi kèm. Mô tả những chỉnh sửa đã thử và response nhận được.
Loại bỏ logic ứng dụng không liên quan và giá trị bí mật. Nếu việc bỏ một trường làm kết quả thay đổi, hãy ghi lại quan sát đó mà không vội kết luận nguyên nhân tổng quát. Mục tiêu là xác định khác biệt nhỏ nhất trong request có thể giải thích lỗi này.
Đừng cho là “thành công” chỉ vì JSON parse được cục bộ. Parse chỉ kiểm tra cú pháp; dịch vụ vẫn sẽ đánh giá hợp đồng task và ngữ cảnh. Giữ các kiểm tra đó tách biệt giúp báo cáo gửi support dễ xử lý hơn.
Một request CAPTCHA ổn định bắt đầu từ hợp đồng đúng và dữ liệu input quan sát được. CapSolver cung cấp giao diện solver đã được tài liệu hóa cho bước đó. Thử CapSolver với một workflow test được cho phép và giữ bước kiểm tra cuối của ứng dụng tách biệt.
H: ERROR_INVALID_TASK_DATA có luôn nghĩa là websiteKey sai không?
Không. Mã này mô tả dữ liệu task không hợp lệ theo nghĩa rộng. Hãy đọc errorDescription và so payload gửi ra với tài liệu của task đã chọn trước khi quy lỗi cho một trường cụ thể.
H: Tôi có nên retry cùng một request nhiều lần không?
Retry y nguyên không sửa chữa bất kỳ sai lệch input nào đã biết. Hãy xác định và sửa dữ liệu liên quan trước, rồi kiểm tra response tiếp theo.
H: Một request có thể là JSON hợp lệ nhưng vẫn có dữ liệu task không hợp lệ không?
Có. JSON hợp lệ chỉ khẳng định cú pháp. Các trường bắt buộc, kiểu giá trị, cấu trúc lồng nhau, lựa chọn task và ngữ cảnh thử thách là các kiểm tra riêng.
H: website_url có thể thay thế cho websiteURL không?
Không. Hãy dùng cách viết mà giao diện cụ thể yêu cầu. Một tham số tool MCP và một trường task REST trực tiếp có thể dùng tên khác nhau.
H: Nếu API chấp nhận request đã sửa nhưng trang vẫn từ chối kết quả thì sao?
Hãy coi đó là vấn đề ở giai đoạn sau. Giữ lại trạng thái kết quả từ solver và điều tra riêng việc trang hiện tại từ chối, thay vì cho rằng lỗi input ban đầu vẫn còn.

Anh Tuan
Data Science Expert
Turning task outcomes into actionable insights.
GIỚI THIỆU TÁC GIẢ
Khắc phục lỗi ERROR_TASK_NOT_SUPPORTED bằng cách kiểm tra loại tác vụ CAPTCHA thực tế, hợp đồng API và ánh xạ trong SDK. Sửa các yêu cầu không tương thích trước khi thử lại.

Khắc phục lỗi ERROR_IP_BANNED bằng cách dừng các yêu cầu API CAPTCHA sai lặp lại, tìm lỗi đầu tiên, kiểm tra các mã liên quan và tiếp tục với một bài kiểm tra có kiểm soát.
