
Anh Tuan
Data Science Expert

ReCaptchaV2TaskProxyLess, websiteURL và websiteKey, sau đó trả về gRecaptchaResponse khi kết quả sẵn sàng.needs_review rõ ràng giúp ngăn vòng lặp và thông báo tồn kho sai lệch.Việc thu thập dữ liệu tồn kho cửa hàng dường như đơn giản cho đến khi trang bán lẻ thay đổi hành vi theo vị trí, yêu cầu bộ chọn cửa hàng, hoặc tạm dừng phiên bản trình duyệt được ủy quyền tại điểm kiểm tra CAPTCHA. Một bộ thu thập đáng tin cậy phải duy trì bối cảnh sản phẩm và cửa hàng, giải quyết điểm kiểm tra qua cùng phiên bản trình duyệt, và chứng minh rằng trang trả về trạng thái tồn kho thực sự. CapSolver có thể đóng vai trò là cơ sở hạ tầng CAPTCHA bên trong bước phục hồi được kiểm soát.
Hướng dẫn này tập trung vào một tình huống vận hành bán lẻ cụ thể: theo dõi khả năng có sẵn sản phẩm công khai cho kế hoạch bổ sung, kiểm tra chất lượng hàng hóa, hoặc thông báo tồn kho dành cho khách hàng. Nó không giả định rằng một nhiệm vụ CAPTCHA thành công có nghĩa là yêu cầu tồn kho đã thành công. Quy trình chỉ kết thúc khi ứng dụng đích cung cấp kết quả tồn kho được nhận diện và bộ thu thập ghi lại đủ bằng chứng để phân biệt giữa "hết hàng" và "không rõ".
Việc thu thập dữ liệu tồn kho cửa hàng nên trả về một bản ghi nhỏ, ổn định mà các hệ thống phía sau có thể tin cậy. Một bản ghi hữu ích chứa nhà bán lẻ, mã định danh sản phẩm chuẩn, cửa hàng hoặc khu vực bưu chính được yêu cầu, khả năng có sẵn quan sát, thời điểm thu thập, và nguồn bằng chứng. Giá có thể được bao gồm, nhưng không nên thay thế cho trạng thái tồn kho rõ ràng.
{
"retailer": "authorized-demo-store",
"product_id": "SKU-4821",
"store_id": "STORE-017",
"postal_area": "10001",
"availability": "in_stock",
"quantity_hint": "limited",
"observed_at": "2026-08-13T09:15:00Z",
"source": "product-page",
"verification": "inventory-label-and-store-id",
"captcha_recovery": "completed"
}
Đầu vào là URL sản phẩm cộng với bối cảnh cửa hàng được phép. Thao tác chọn hoặc xác nhận vị trí, phát hiện điểm kiểm tra xác minh, giải quyết nó khi được ủy quyền, đọc trạng thái tồn kho và chuẩn hóa kết quả. Đầu ra là bản ghi trên hoặc trạng thái kết thúc như not_found, out_of_stock, needs_review, hoặc policy_denied. Không bao giờ chuyển đổi thời gian hết hạn, vòng lặp kiểm tra, tường đăng nhập hoặc phản hồi bị hỏng thành out_of_stock; sai lầm này tạo ra tín hiệu kinh doanh sai lệch.
FAQ giải CAPTCHA của CapSolver giải thích giới hạn dịch vụ, trong khi hướng dẫn tự động hóa trình duyệt cung cấp bối cảnh rộng hơn về việc duy trì trạng thái trang. Trong trường hợp người dùng này, trình duyệt sở hữu điều hướng và bằng chứng, CapSolver sở hữu nhiệm vụ CAPTCHA được tài liệu hóa, và ứng dụng của bạn sở hữu ủy quyền, chính sách thử lại và xác minh cuối cùng.
Một bộ thu thập bán lẻ thường thực hiện một số hành động có trạng thái trước khi tồn kho xuất hiện: tải trang sản phẩm, chấp nhận cài đặt khu vực, chọn cửa hàng, mở bảng lấy hàng, hoặc gọi điểm cuối tồn kho công khai được khởi tạo bởi trang. Một CAPTCHA có thể xuất hiện trước khi trang đầu tiên được hiển thị hoặc sau một trong những hành động đó. Nếu bộ thu thập coi nó là HTML thông thường, các lựa chọn sẽ thất bại và công việc có thể ghi lại bản ghi trống hoặc sai lệch.
Phản hồi đúng là chuyển trạng thái, không phải thử lại mù. Bộ thu thập chuyển từ collecting sang captcha_required, đóng băng bối cảnh sản phẩm và vị trí hiện tại, chỉ thu thập các trường kiểm tra được tài liệu hóa, và gọi bộ điều phối nhà cung cấp. Một phản hồi nhà cung cấp sẵn sàng chuyển quy trình sang apply_solution; việc chấp nhận ứng dụng chuyển nó sang verify_inventory. Một kết quả bị từ chối, điểm kiểm tra lặp lại, máy chủ không mong đợi hoặc thời hạn hết hạn chuyển nó sang needs_review.
Thiết kế này tách biệt ba sự thật khác nhau:
Chỉ có sự thật thứ ba cho phép công việc phát hành bản ghi tồn kho. Sự tách biệt này đặc biệt quan trọng khi nhà bán lẻ sử dụng nội dung được lưu trữ, chuyển hướng giữa các miền khu vực, hoặc cập nhật tồn kho theo thời gian thực sau khi HTML ban đầu được tải.
Sử dụng sáu thành phần với trách nhiệm hẹp.
Danh sách phạm vi liệt kê các tên miền được phê duyệt, mục đích thu thập, đường dẫn sản phẩm, khu vực cửa hàng, lịch trình và người quản lý. Nó cũng nên ghi lại các ngoại lệ: khu vực tài khoản xác thực, cổng nhân viên, thanh toán, thanh toán, hồ sơ cá nhân, và bất kỳ đường dẫn nào mà chủ trang hoặc thỏa thuận của bạn đặt ngoài phạm vi. Một yêu cầu không khớp với danh sách sẽ dừng lại trước khi trình duyệt mở.
Trình duyệt thiết lập ngôn ngữ, lựa chọn cửa hàng, cookie và trạng thái điều hướng. Giữ một lần kiểm tra sản phẩm bên trong một bối cảnh trình duyệt. Việc tái sử dụng cookie không liên quan giữa các cửa hàng có thể tạo ra sự dịch chuyển vị trí gây nhầm lẫn; xóa bối cảnh trong khi phục hồi CAPTCHA có thể làm mất giải pháp. Chỉ lưu trữ dữ liệu tối thiểu cần thiết cho công việc và xóa nó theo chính sách lưu trữ của bạn.
Bộ phát hiện tìm kiếm các phần tử widget rõ ràng, trường phản hồi biết trước, mã kiểm tra hoặc tuyến xác minh. Nó cũng phân biệt CAPTCHA với các vấn đề thông thường như 404, hộp thoại đồng ý, cửa hàng không khả dụng hoặc lỗi ứng dụng. Từ điển CapSolver hữu ích để duy trì thuật ngữ kiểm tra nhất quán trong nhật ký và sổ tay vận hành.
Bộ điều phối nhận yêu cầu hẹp chứa loại kiểm tra, URL trang, khóa trang và ID liên kết. Nó đọc khóa API từ kho lưu trữ bí mật, tạo một nhiệm vụ, kiểm tra cùng nhiệm vụ đó với thời hạn, xác minh cấu trúc phản hồi và trả về thành công hoặc thất bại được chuẩn hóa. Nó không quyết định các trang nào được phép và không ghi dữ liệu tồn kho.
Bộ trích xuất ánh xạ trang hoặc phản hồi công khai thành lược đồ tồn kho ổn định. Nó nên ưu tiên mã định danh sản phẩm bền, ID cửa hàng, dữ liệu được cấu trúc và văn bản khả năng có sẵn rõ ràng thay vì vị trí trực quan dễ vỡ. Nếu trang chứa nhiều chế độ giao hàng, hãy ghi lại lấy hàng, giao hàng và giao hàng địa phương riêng biệt thay vì gộp chúng thành một boolean.
Lớp bằng chứng lưu trữ các sự thật chẩn đoán không nhạy cảm: ID liên kết, tên miền được phép, ID sản phẩm, ID cửa hàng, loại kiểm tra, ID nhiệm vụ nhà cung cấp, thời gian đã trôi qua, trạng thái cuối cùng và trường lựa chọn hoặc phản hồi được sử dụng để xác minh. Nó nên che đi token, cookie, khóa API, địa chỉ và bất kỳ dữ liệu khách hàng nào. Chỉ thông báo về thay đổi trạng thái có ý nghĩa và yêu cầu hai quan sát khi kết quả tạm thời duy nhất có thể gây nhiễu vận hành.
Trước khi triển khai phục hồi CAPTCHA, xác nhận rằng bạn có quyền tự động hóa các trang bán lẻ được chọn và mục đích thu thập được tài liệu hóa. Tôn trọng giới hạn hợp đồng, luật pháp áp dụng, hướng dẫn robots nơi chúng áp dụng cho việc sử dụng của bạn và tốc độ yêu cầu hợp lý. Luật ngăn cản robot mô tả các chỉ thị robot tiêu chuẩn; đây là một tín hiệu trong đánh giá ủy quyền rộng hơn, không phải là sự cấp phép truy cập.
Sử dụng các yêu cầu tiên quyết sau:
requests và Playwright được cài đặt.Thông tin bí mật nên đến từ môi trường được quản lý hoặc kho lưu trữ bí mật. Hướng dẫn quản lý bí mật của OWASP hỗ trợ tách biệt thông tin xác thực khỏi mã ứng dụng, nhật ký và tài nguyên xây dựng. Không đặt khóa khách hàng thực tế, cookie, token đã giải, hoặc địa chỉ khách hàng trong bài viết, câu hỏi, hình ảnh chụp màn hình hoặc vé hỗ trợ kỹ thuật.
Bộ phát hiện nên chạy sau mỗi hành động có thể kích hoạt trang xác minh: điều hướng ban đầu, thay đổi cửa hàng, mở bảng lấy hàng, phân trang và làm mới tồn kho. Phát hiện nên trả về bằng chứng cấu trúc thay vì boolean đơn giản.
from dataclasses import dataclass
@dataclass(frozen=True)
class CaptchaEvidence:
kind: str
website_url: str
website_key: str
async def detect_recaptcha_v2(page) -> CaptchaEvidence | None:
frame = page.locator('iframe[src*="recaptcha"]')
textarea = page.locator('textarea[name="g-recaptcha-response"]')
if await frame.count() == 0 and await textarea.count() == 0:
return None
key = await page.locator('[data-sitekey]').first.get_attribute('data-sitekey')
if not key:
raise RuntimeError("reCAPTCHA detected without a readable site key")
return CaptchaEvidence(
kind="recaptcha_v2",
website_url=page.url,
website_key=key,
)
Đầu vào là trang Playwright đã mở. Thao tác kiểm tra hai tín hiệu widget rõ ràng và đọc khóa trang được cung cấp. Đầu ra là None hoặc đối tượng bằng chứng được định dạng. Hàm dừng với lỗi khi kiểm tra hiện tại nhưng khóa không thể xác minh; đoán khóa hoặc tái sử dụng từ trang khác sẽ làm cho phục hồi không đáng tin cậy.
Trước khi gọi người giải, xác minh rằng page.url vẫn thuộc tên miền bán lẻ được cho phép và công việc hiện tại vẫn giữ các mã sản phẩm và cửa hàng mong đợi. Nếu chuyển hướng dẫn đến trang tài khoản, thanh toán, quy trình thanh toán hoặc miền không mong đợi, dừng lại và ghi policy_denied. Khả năng kỹ thuật không cung cấp quyền truy cập vào dữ liệu riêng tư, bị hạn chế, nhạy cảm hoặc không được ủy quyền.
Hướng dẫn nhiệm vụ reCAPTCHA v2 của CapSolver tài liệu hóa ReCaptchaV2TaskProxyLess, websiteURL và websiteKey. API tạo nhiệm vụ trả về taskId; API kết quả nhiệm vụ trả về kết quả cuối cùng. Một kết quả reCAPTCHA v2 thành công bao gồm solution.gRecaptchaResponse.
import os
import time
import requests
CAPSOLVER_API = "https://api.capsolver.com"
def solve_recaptcha_v2(website_url: str, website_key: str) -> str:
client_key = os.environ["CAPSOLVER_API_KEY"]
created = requests.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": client_key,
"task": {
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": website_url,
"websiteKey": website_key,
},
},
timeout=30,
).json()
if created.get("errorId") or not created.get("taskId"):
raise RuntimeError(created.get("errorDescription", "createTask failed"))
task_id = created["taskId"]
deadline = time.monotonic() + 120
while time.monotonic() < deadline:
result = requests.post(
f"{CAPSOLVER_API}/getTaskResult",
json={"clientKey": client_key, "taskId": task_id},
timeout=30,
).json()
if result.get("status") == "ready":
token = result.get("solution", {}).get("gRecaptchaResponse")
if not token:
raise RuntimeError("ready result did not contain gRecaptchaResponse")
return token
if result.get("status") == "failed" or result.get("errorId"):
raise RuntimeError(result.get("errorDescription", "CAPTCHA task failed"))
time.sleep(3)
raise TimeoutError("CAPTCHA task exceeded the 120-second deadline")
Đầu vào của hàm là URL trang đã xác minh và khóa trang. Thao tác tạo đúng một nhiệm vụ và chỉ kiểm tra taskId của nó. Đầu ra là chuỗi token được tài liệu hóa. Các điều kiện dừng là rõ ràng: lỗi tạo nhiệm vụ, trạng thái thất bại, phản hồi sẵn sàng bị hỏng, thời gian hết hạn mạng hoặc thời hạn 120 giây. Một lần thử lại giao thức có thể lặp lại yêu cầu HTTP cho cùng một kết quả nhiệm vụ, nhưng nó không được phép tạo một loạt nhiệm vụ tính phí mới một cách im lặng.
Nhận mã thưởng CapSolver của bạn
Tăng ngân sách tự động hóa của bạn ngay lập tức!
Sử dụng mã thưởng CAP26 khi nạp tiền vào tài khoản CapSolver để nhận thêm 5% thưởng cho mỗi lần nạp — không giới hạn.
Nhận mã thưởng ngay bây giờ trong Bảng điều khiển CapSolver
Việc áp dụng token là cụ thể cho trang. Trên tích hợp được ủy quyền hoặc trang thử nghiệm được kiểm soát, ghi token vào trường phản hồi được tài liệu hóa và gọi đường dẫn gọi lại hoặc gửi được trang kỳ vọng. Không sao chép token vào trình duyệt mới, trang sản phẩm khác hoặc bối cảnh cửa hàng khác.
async def apply_recaptcha_token(page, token: str) -> None:
applied = await page.evaluate(
"""
(token) => {
const fields = [...document.querySelectorAll(
'textarea[name="g-recaptcha-response"]'
)];
if (fields.length === 0) return false;
for (const field of fields) {
field.value = token;
field.innerHTML = token;
field.dispatchEvent(new Event('change', { bubbles: true }));
}
return true;
}
""",
token,
)
nếu không được áp dụng:
raise RuntimeError("trường phản hồi reCAPTCHA đã biến mất trước khi được áp dụng")
Ví dụ này giới hạn cố ý chỉ trường phản hồi hiển thị trên trang hiện tại. Một số triển khai cũng yêu cầu một callback được tài liệu hóa. Kiểm tra trang bạn sở hữu hoặc được ủy quyền để kiểm tra và kết nối với hợp đồng tích hợp thực tế của nó. Không bao giờ tạo tên callback giả. Sau khi áp dụng, chờ widget hoặc tuyến xác minh thay đổi trạng thái, sau đó tiếp tục hành động kiểm kê một lần nữa.
Xác minh kiểm kê nên liên kết trạng thái quan sát được với sản phẩm và kho đã yêu cầu. Một lựa chọn nói "có sẵn" là không đủ nếu nhãn kho thay đổi âm thầm hoặc trang sản phẩm chuyển hướng đến một biến thể.
from datetime import datetime, timezone
async def read_inventory(page, expected_sku: str, expected_store: str) -> dict:
sku = (await page.locator('[data-product-sku]').first.get_attribute('data-product-sku'))
store = (await page.locator('[data-store-id]').first.get_attribute('data-store-id'))
label = (await page.locator('[data-inventory-status]').first.inner_text()).strip()
if sku != expected_sku or store != expected_store:
raise RuntimeError("bối cảnh sản phẩm hoặc kho đã thay đổi trong quá trình thu thập")
normalized = {
"Có sẵn": "in_stock",
"Số lượng hạn chế": "limited",
"Hết hàng": "out_of_stock",
}.get(label)
if not normalized:
raise RuntimeError(f"nhãn kiểm kê không nhận dạng được: {label!r}")
return {
"product_id": sku,
"store_id": store,
"availability": normalized,
"observed_at": datetime.now(timezone.utc).isoformat(),
"verification": "product-store-status",
}
Các lựa chọn là mẫu cho trang bạn kiểm soát hoặc được phép tự động hóa. Đầu vào là trang hiện tại cộng với các định danh đã mong đợi. Thao tác kiểm tra danh tính trước khi chuẩn hóa nhãn. Đầu ra là một bản ghi kiểm kê đã xác minh. Hàm dừng lại khi thiếu phần tử, định danh thay đổi hoặc trạng thái không quen thuộc. Những dừng này bảo vệ hệ thống phía sau khỏi một sự cố phổ biến: biến đổi bố cục trang thành sự kiện hết hàng giả.
Đối với sản xuất, thêm một kênh bằng chứng thứ hai khi có sẵn. Các ví dụ bao gồm một đối tượng sản phẩm được cấu trúc, phản hồi XHR được khởi tạo bởi trang, nhãn kho trong bảng thu gom, hoặc kiểm tra khả năng đặt hàng được phép bởi thỏa thuận của bạn. Người thu thập nên yêu cầu sự đồng thuận giữa bằng chứng danh tính và khả năng, không phải yêu cầu lặp lại để tăng sự tự tin.
Một máy trạng thái có thể dự đoán giúp quy trình làm việc có thể quan sát được và ngăn ngừa phục hồi đệ quy.
SCOPED
-> OPEN_PRODUCT
-> CONFIRM_STORE
-> DETECT_CHECKPOINT
-> không có thách thức: READ_INVENTORY
-> reCAPTCHA v2: CREATE_ONE_TASK
-> sẵn sàng: APPLY_IN_SAME_SESSION
-> thất bại/thời hạn: NEEDS_REVIEW
-> không hỗ trợ/bị hiểu lầm: NEEDS_REVIEW
-> REPLAY_INVENTORY_ACTION_ONCE
-> VERIFY_PRODUCT + STORE + AVAILABILITY
-> hợp lệ: WRITE_RECORD
-> thách thức lặp lại: NEEDS_REVIEW
-> bối cảnh thay đổi: POLICY_DENIED
Công việc nên mang theo một ID liên kết duy nhất qua mọi trạng thái. Ghi lại thời gian chuyển đổi và kết quả, nhưng không bao giờ ghi nhật ký token đã giải hoặc khóa khách hàng. FAQ lỗi và khắc phục sự cố của CapSolver có thể giúp các nhà điều hành phân biệt giữa lỗi nhà cung cấp và lỗi trình duyệt và ứng dụng.
Các triệu chứng bao gồm khóa trang bị thiếu, trang xác minh bất ngờ, hoặc gia đình widget mà trình thích ứng không nhận diện được. Chụp ảnh màn hình đã được che khuất và tên miền cấp cao, sau đó dừng lại. Không gửi tham số đoán trước hoặc coi mọi iframe là reCAPTCHA.
Một errorId khác 0, trạng thái thất bại, kết quả sẵn sàng bị hỏng, hoặc thời hạn kiểm tra là lỗi ở biên giới nhà cung cấp. Lưu trữ taskId, mô tả lỗi được tài liệu hóa, thời gian đã trôi qua và ID liên kết. Chỉ thử lại nếu lớp lỗi được chỉ định là tạm thời và ngân sách nhiệm vụ còn lại cho phép.
Trường phản hồi có thể biến mất vì trang đã điều hướng, tái_render, hoặc thay đổi bối cảnh kho. Không áp dụng token cho trang thay thế tự động. Chạy lại kiểm tra phạm vi và bối cảnh, sau đó khởi động lại kiểm tra sản phẩm đơn lẻ từ trạng thái sạch hoặc định tuyến nó đến xem xét.
Nhà cung cấp có thể trả về nhiệm vụ sẵn sàng trong khi trang từ chối giải pháp vì phiên, thời gian trang, dữ liệu mô tả widget hoặc đường dẫn callback không khớp. Phân loại đây là lỗi áp dụng. Một lần tái phát có thể đủ. Nếu CAPTCHA lặp lại, dừng lại thay vì bắt đầu vòng lặp.
Nếu trang tải nhưng bằng chứng tồn kho bị vắng mặt hoặc mâu thuẫn, ghi lại unknown, không phải out_of_stock. Thông báo khi mâu thuẫn vượt quá ngưỡng cho nhà bán lẻ hoặc mẫu, vì điều này thường chỉ ra thay đổi mã hóa thay vì sự kiện tồn kho thực tế.
Thông số ngữ nghĩa HTTP giúp phân biệt trạng thái truyền tải từ ý nghĩa ứng dụng. Một 200 OK chỉ mô tả phản hồi HTTP; nó không chứng minh rằng một vị trí đã được chọn, CAPTCHA đã được chấp nhận, hoặc tồn kho đã được trả về.
Tự động hóa tồn kho tốt giảm thiểu thu thập trong khi tối đa hóa sự tự tin. Điều tra ở tần suất được biện minh bởi nhu cầu kinh doanh và được phép bởi nguồn. Lưu trữ dữ liệu sản phẩm ổn định. Lên lịch kiểm tra kho với độ trễ trong khoảng được phê duyệt, không phải yêu cầu song song đột ngột. Sử dụng truy vấn có điều kiện khi nguồn hỗ trợ, và dừng chạy khi tỷ lệ thách thức hoặc tỷ lệ lỗi áp dụng tăng đột ngột.
Theo dõi các chỉ số này riêng biệt:
Không tối ưu chỉ cho việc hoàn thành giải pháp. Một tỷ lệ sẵn sàng cao với tỷ lệ chấp nhận áp dụng thấp cho thấy vấn đề tích hợp. Một tỷ lệ chấp nhận cao với tỷ lệ tồn kho không xác định tăng cho thấy vấn đề extractor hoặc mẫu trang. Các chỉ số nên chỉ cho các nhà điều hành lớp sở hữu lỗi.
Khi dữ liệu gửi cảnh báo, loại bỏ các quan sát lặp lại và xác định quy tắc ổn định. Ví dụ, thông báo về out_of_stock chỉ sau hai kiểm tra hợp lệ cách nhau khoảng thời gian thu thập bình thường, trong khi chuyển đổi in_stock có thể yêu cầu quan sát thành công mới. Giữ quy tắc này hiển thị trong cấu hình để các đội kinh doanh có thể kiểm tra lý do cảnh báo được gửi.
Kiểm tra quy trình trên các trang bạn sở hữu hoặc được ủy quyền rõ ràng để tự động hóa. Sử dụng các bộ dữ liệu cho các trạng thái tồn kho thông thường và tích hợp CAPTCHA được kiểm soát cho các bài kiểm tra phục hồi.
createTask và xác minh rằng không có bản ghi tồn kho nào được ghi.processing cho đến khi hết thời hạn và xác minh rằng chỉ có một nhiệm vụ được tạo.gRecaptchaResponse và xác minh rằng kiểm tra mẫu thất bại.needs_review.unknown, không phải out_of_stock.Hướng dẫn chọn API giải CAPTCHA https://www.capsolver.com/blog/web-scraping/choose-captcha-solving-api cung cấp các tiêu chí đánh giá bổ sung, nhưng bài kiểm tra chấp nhận cho trường hợp người dùng này vẫn là cụ thể cho doanh nghiệp: hệ thống phải trả về sản phẩm đúng, kho đúng và khả năng đúng sau khi phục hồi có giới hạn.
Việc thu thập dữ liệu tồn kho cửa hàng trở nên đáng tin cậy khi xử lý CAPTCHA được coi là trạng thái được kiểm soát trong quy trình thương mại điện tử đã xác minh. Giữ nguyên bối cảnh sản phẩm và kho, tạo một nhiệm vụ được tài liệu hóa, áp dụng giải pháp trong cùng phiên được ủy quyền, tái phát hành hành động kiểm kê một lần, và chỉ phát hành dữ liệu sau khi kiểm tra danh tính và khả năng thành công. CapSolver cung cấp cơ sở hạ tầng nhiệm vụ CAPTCHA; người thu thập của bạn vẫn chịu trách nhiệm về phạm vi, giới hạn tốc độ, chất lượng dữ liệu và điều kiện dừng.
Câu hỏi: Đầu ra tối thiểu cho việc thu thập dữ liệu tồn kho cửa hàng là gì?
Đầu ra đáng tin cậy tối thiểu chứa ID sản phẩm chuẩn, ID kho hoặc khu vực, khả năng được chuẩn hóa, thời gian quan sát và bằng chứng được sử dụng để xác minh trạng thái. Một trang trống hoặc điểm kiểm tra thất bại không bao giờ được chuyển đổi thành hết hàng.
Câu hỏi: Tại sao phải duy trì cùng phiên trình duyệt trong quá trình phục hồi CAPTCHA?
Cùng phiên duy trì trang, cookie, lựa chọn sản phẩm, lựa chọn kho và chu kỳ widget liên quan đến điểm kiểm tra. Chuyển kết quả sang bối cảnh khác có thể gây từ chối hoặc gắn quan sát với kho sai.
Câu hỏi: Một công việc kiểm kê nên thử lại CAPTCHA bao nhiêu lần?
Sử dụng ngân sách nhỏ rõ ràng: một nhiệm vụ và một lần áp dụng kiểm soát là mặc định hợp lý. Một thách thức lặp lại nên đi vào needs_review để tích hợp có thể được kiểm tra mà không cần vòng lặp tốn kém hoặc gây gián đoạn.
Câu hỏi: Một nhiệm vụ CapSolver sẵn sàng có chứng minh rằng tồn kho đã được thu thập không?
Không. Một nhiệm vụ sẵn sàng chỉ chứng minh rằng nhà cung cấp đã trả về giải pháp. Trình duyệt phải chấp nhận nó, và ứng dụng vẫn phải trả về sản phẩm, kho và trạng thái tồn kho được nhận diện.
Câu hỏi: Quy trình này có thể thu thập tồn kho từ cổng cửa hàng riêng tư không?
Chỉ khi chủ cổng đã ủy quyền rõ ràng cho tự động hóa và quy trình tuân thủ thỏa thuận và luật pháp liên quan. Khả năng kỹ thuật không cấp phép truy cập dữ liệu riêng, bị hạn chế, nhạy cảm hoặc không được ủy quyền.
Học kiến trúc gỡ mã web Rust có thể mở rộng với reqwest, scraper, gỡ mã bất đồng bộ, gỡ mã trình duyệt không đầu, xoay proxy và xử lý CAPTCHA tuân thủ.

Tự động hóa việc giải CAPTCHA với Nanobot và CapSolver. Sử dụng Playwright để giải reCAPTCHA và Cloudflare tự động.
