منوی مستندات

چگونه با وظایف AntiGate از هر نوع کپچایی عبور کنیم

ما پس از سال‌ها تحقیق و توسعه، راه‌حلی جامع به شما می‌دهیم که کمک کند ربات‌هایتان از کپچاهای ساخته شده به دست بشر عبور کنند. ما این راه‌حل را «AntiGate» نامیده‌ایم. این‌ها، سناریوهایی هستند که کارگران انسانی ما استفاده می‌کنند تا وظایفی را انجام دهند که به طور دقیق تعریف شده‌اند.

در نقطه‌ی مشخص، اپلیکیشن شما با یک فیلتر محافظ با نوعی جدید از کپچا، اسکریپتی عجیب و غریب در کد صفحه یا هر چیز دیگری برخورد خواهد کرد. در اینجاست که وظایف AntiGate پا پیش می‌گذارد. شما به یکی از کارگران ما می‌سپارید که صفحه‌ی مرورگری انسانی و واقعی باز کند.

  • در ابتدا یک قالب انتخاب کنید. هم می‌توانید یکی از قالب‌های موجود را استفاده کنید و هم این که می‌توانید خودتان یکی بسازید. یک قالب، مجموعه‌ای از دستورالعمل‌های قدم به قدم است که کارگران اجرایش می‌کنند.
  • در مرحله‌ی دوم، هر اطلاعاتی که قالب نیاز دارد را فراهم کنید. این اطلاعات می‌توانند شامل مقدار یک ورودی، انتخاب‌گرِ CSS یک ورودی یا آدرس اینترنتی‌ای که ما باید به آن برویم باشد. کمی دیگر، بیشتر درباره‌ی قالب‌ها صحبت می‌کنیم.
  • مرحله‌ی سوم هم پراکسی‌ها است که اجباری در انجامش وجود ندارد. اگر وب‌سایتی وجود داشته باشد که کوکی‌های هر نشست را فقط به یک آدرس آی‌پی بدهد، به این ابزارها نیاز خواهید داشت.
با این سه مورد، با API ما یک وظیفه‌ می‌سازید. یک کارگر با افزونه‌ی مرورگر مخصوص ما وارد وب‌سایت شما می‌شود و به صورت خودکار یا دستی، تمام مراحل سناریو را اجرا می‌کند. زمانی که اجرای اسکریپت تمام شد، کل اطلاعات مرورگرشان را برای آن نشست دریافت می‌کنیم. این اطلاعات شامل کوکی‌ها، مقادیر حافظه‌ی داخلی و اثر انگشت مرورگر می‌شوند. سپس این داده‌ها را به اپلیکیشن شما باز خواهیم گرداند. در ادامه نوبت شما خواهد بود که از این اطلاعات استفاده کنید و نشست کارگر ما را بازیابی کنید. بعد از آن، خواهید توانست فرآیند را به صورتی دنبال کنید که گویی یک انسان در حال کار با کامپیوتر است. آیا نباید از این سیستم شگفت‌زده شد؟ :)

قالب‌های AntiGate چه هستند؟

قالب AntiGate سناریویی مشخص را تعریف می‌کند که کارگران ما باید دنبالش کنند. قالب‌ها از مرحله‌های متوالی ساخته شده‌اند. وقتی که یکی از مراحل تکمیل شود، کارگر سراغ مرحله‌ی بعد خواهد رفت. زمانی که تمام مراحل تکمیل شوند، وظیفه کاملا انجام شده است.در این حالت از نشست کارگر یک اسنپ‌شات گرفته خواهد شد و به اپلیکیشن شما ارسال می‌شود.

چه نوع مراحلی می‌توانند وجود داشته باشند؟

  • یک کادر متنی را به طور خودکار یا دستی پر کنید.
  • در صفحه منتظر نمونه‌ی متن بعدی باشید تا پدیدار (یا ناپدید) شود.
  • منتظر عنصر DOM بعدی باشید که در CSS تعریف شده است تا پدیدار (یا ناپدید) شود.
  • منتظر کلیدواژه‌ای باشید تا در صفحه‌ی مرورگر فعلی کارگر پدیدار (یا ناپدید) شود.
کادر متنی «شرح برای کارگر» (description for workers) می‌تواند هر مرحله‌ی دیگری که انتظار دارید کارگر انجام دهد را در بر بگیرد. به عنوان مثال: «کپچا را حل کنید و کلید ثبت را بزنید».

بگذارید مثالی ببینیم. به مرکز توسعه‌دهنده‌ها بروید و قالبی رایگان برای تست درست کنید. نگران نباشید، هیچ چیز خراب نخواهد شد!

اینجا را کلیک کنید تا یک قالب اضافه کنید
اینجا را کلیک کنید تا یک مثال بارگزاری شود
به بخش مراحل توجه کنید

شما یک مثال نمایشی را بارگزاری کرده‌اید. می‌توانید این مثال را در حساب‌تان ذخیره کنید و خودتان بعدا امتحانش کنید. بیایید با لیست کامل ویژگی‌های قالب آشنا شویم:

  • نام قالب. همین که قالب ذخیره شود، دیگر نمی‌توان تغییرش داد. وقتی قالب را منتشر کردید، با همین نام در API موجود خواهد شد.
  • توضیحات برای مشتری‌ها. قالب‌های عمومی در کاتالوگ قالب‌ها ما موجود هستند.
  • شرح برای کارگران. این متنی است که کارگران ما بالای صفحه می‌بیند.
    مثال رابط کارگران
  • متغیرها. این لیستی از نام‌های متغیر است که می‌توانید اضافه‌شان کنید و در مراحل، به جای مقادیر ثابت استفاده‌شان کنید. در این مثال دو متغیر داریم؛ «نام کاربری» و «رمز عبور». این دو متغیر در مرحله‌ی اول و دوم، برای پر کردن فرم ورود نمایشی استفاده می‌شوند. شما می‌توانید را به جای این که نام کاربری و رمز عبور را درقالب به طور غیر قابل تغییر (hardcode) بنویسید، این مقادیر متغیر را با API فراهم کنید.
    متغیرهایی که در مرحله‌ی ۱ و ۲ استفاده شده‌اند
  • مراحل کارگر. در اینجا می‌توانید ترتیب سناریوی مراحل را ویرایش کنید یا این که تغییر دهید. ما در مثال خودمان کارهای زیر را انجام می‌دهیم:
    ۱. کادر متنی را به طور خودکار با انتخاب‌گر "#login" در CSS پر کنید. مقدار کادر متنی را با متغیر «نام کاربری» (login) پر کنید.
    ۲. کادر متنی را به طور خودکار با انتخاب‌گر "#password" در CSS پر کنید. مقدار کادر متنی را با متغیر «رمز عبور» (password) پر کنید.
    ۳. در صفحه منتظر متن کنترل باشید تا پدیدار (یا ناپدید) شود. این متغیر روی مقدار «تست با نام کاربری انجام شد» (Test passed with login) ثابت شده است.

حالا می‌توانید قالب را ذخیره کنید و در مرکز توسعه نمایش داده خواهد شد. در نظر داشته باشید که وضعیت این قالب «جعبه شنی» (Sandbox) خواهد بود. به عبارت دیگر در API وجود نخواهد داشت و تنها برای شما در دسترس خواهد بود. از اینجای کار، می‌توانید در جایگاه یکی از کارگران، قالبی که به تازگی ساخته‌اید را امتحان کنید.

آزمایش قالب‌ها

در این مرحله، نیاز خواهید داشت که از مرورگر کروم استفاده کنید. توصیه‌ی ما این است که پروفایل کاربری جدیدی در این مرورگر بسازید؛ چرا که لازم است ما افزونه‌ی خودمان را رویش نصب کنیم که به کوکی‌های مرورگر دسترسی خواهد داشت.

ما سپس، در کارت قالب شما کلید «آزمایش» را می‌زنیم.

دستورالعمل‌ها را دنبال و افزونه را روی پلت‌فرم‌تان نصب کنید. سپس صفحه را دوباره بارگزاری کنید تا افزونه کار کند. متغیرهای «نام کاربری» و «رمز عبور» را با مقادیری تصادفی پر کنید و روی کلید «اجرای آزمایش» بزنید. صفحه‌ی جدید باید چنین شکلی داشته باشد:

نزدیک به نوار آدرس، نواری آبی است که افزونه به بالای صفحه‌ی هدف اضافه می‌کند. کارگران از این راه متوجه وظایف‌شان خواهند شد و اجرای وظیفه‌ را کنترل می‌کنند.

همچنین در نظر داشته باشید که نام کاربری و رمز عبور زمانی که با متغیر پرشان می‌کنید، مخفی خواهند بود. این کار عمدا انجام می‌شود. اگرچه کارگران با استفاده از میز فرمان توسعه‌دهنده به کل داده‌های وظیفه‌ وصل هستند، اما ۹۹.۹۹ درصد از آن‌ها نیازی نمی‌بینند به خودشان زحمت دهند که ببینند در پس صحنه چه خبر است.

در زمان حل کردن کپچا روی کلید «ورود» بزنید. از آخرین مرحله‌ی قالب، «WAIT_CONTROL_TEXT_PRESENT» گذر خواهید کرد. این افزونه به دنبال عبارت کنترلی «Test passed with login» خواهد گشت. این عبارت به طور دائم در قالب شما تعریف شده است. زبانه به طور خودکار بسته می‌شود و اسنپ‌شات نشست، در بخش نتایج نمایش داده خواهد شد.

نمونه‌ی نتایج

مشابه همین داده‌های اسنپ‌شات را می‌توان از API هم دریافت کرد. اما برای این که قالب شما در API موجود شود، ابتدا باید منتشرش کنید.

انتشار قالب‌ها

شما در زمان انتشار یک قالب دو انتخاب دارید؛ یکی این که قالب را عمومی کنید و دیگری این که به طور خصوصی منتشرش کنید.

  • قالب‌های خصوصی تنها با کلید API شما موجود هستند. مشتری‌های دیگر نمی‌توانند از آن‌ها استفاده کنند. هزینه‌ی بررسی و انتشار آن‌ها هم ۱۰ دلار است.
  • قالب‌های عمومی برای همه قابل استفاده هستند. شما ۵ درصد از مبلغی که مشتری‌های دیگر با قالب شما هزینه کنند را دریافت می‌کنید. شما باید چند نفر از مخاطبان را برای مشتری‌های ما کنار بگذارید تا اگر مشکلی برای قالب‌تان به وجود آمد، بتوانند به شما مراجعه کنند. هزینه‌ی بررسی و انتشار این نوع قالب ۱ دلار است.

ما تمام قالب‌ها را با دقت بررسی می‌کنیم. برای این که با موفقیت به حالت تولید بروید، باید چند شرط ابتدایی را داشته باشید:

  • هیچ نوعی از فعالیت‌های غیرقانونی انجام ندهید.
  • قالب‌ها نباید از روی قالب‌های فعلی کپی شده باشند.
  • قالب مصنوعی یا آزمایشی ثبت نکنید.
  • آدرس یک صفحه اینترنتی که قالب رویش آزمایش شده باشد را به عنوان مثال به ما بدهید. همچنین، مقادیر متغیر را هم فراهم کنید تا بتوانیم بررسی را انجام دهیم. ما یک آزمایش اجرا خواهیم کرد و تمام مراحل باید با موفقیت پشت سر گذاشته شوند.

درخواست‌های API

درخواستی که برای ساختن قالب AntiGate بالا به API ارسال می‌کنید، به این سادگی به نظر خواهد رسید:

CURL
          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY",
    "task":
        {
            "type":"AntiGateTask",
            "websiteURL":"https://anti-captcha.com/tutorials/v2-textarea",
            "templateName":"Demo sign-in at anti-captcha.com #123456",
            "variables": {
                "login":"some value",
                "password":"some value"
            }
        }
}' https://api.anti-captcha.com/createTask
        

به عبارت دیگر، پارامترهای «متغیرها» (variables) و «نام قالب» (templateName) را در قالب پر می‌کنید.

استفاده از نتایج وظیفه‌

خروجی وظایفی که AntiGate آن‌ها را با موفقیت تمام کند، راه‌حلی است که شامل «کوکی‌ها» (cookies)، «حافظه‌ی داخلی» (localStorage)، «اثرانگشت» (fingerprint) و «url» خواهد بود. کاری که نرم‌افزار شما باید بکند، این است که با استفاده از «کوکی‌ها» به «url» داخل این درخواست برود و حداقل، از مقدار «fingerprint.self.navigator.userAgent» برای عامل‌های کاربری مرورگر استفاده کند. وب‌سایت‌های پیچیده‌تر داده‌های مهم را در localStorage ذخیره می‌کنند که نوع پیشرفته‌ای از کوکی به حساب میاید. در این حالت، باید این داده‌ها را پیش از اجرای هر نوع جاوااسکریپتی در صفحه وارد کنید. این کار را می‌توان با محیط توسعه‌ای چون Puppeteer انجام داد. احتمالا برای این موضوع باید مقاله‌ی دیگری بنویسیم.

ساختن قالب‌های خودتان

کافی است مراحل بالا را بدون بالا آوردن قالب نمونه دنبال کنید. تمام جزییات را وارد کنید و مراحل را با دقت اضافه کنید. در نظر داشته باشید که مراحل یکی پس ازدیگری دنبال می‌شوند. افزونه تا زمانی که مرحله‌ی جاری تمام نشده باشد، اجازه نمی‌دهد که مرحله‌ی بعدی اجرا شود. شما هر زمانی که بخواهید می‌توانید قالب‌تان را ذخیره کنید و با افزونه‌ی مرورگر کارگر، تستش کنید.

قیمت

در حال حاضر ما قیمت را ۲ دلار به ازای ۱۰۰۰ وظیفه‌ در نظر گرفته‌ایم. به علاوه، هر بار اجرای کار ۱/۶۰ قیمت وظیفه‌ هزینه خواهد داشت. برای مثال اگر وظیفه‌ ۰.۰۰۲ دلار هزینه خواهد برد و کارگر ۲۰ ثانیه زمان صرفش کند،
هزینه‌ی نهایی ۰.۰۰۲۶۶ = ۰.۰۰۲ + (۲۰ × ۶۰ / ۰.۰۰۲) خواهد بود.

نتیجه‌گیری

در زمان نوشتن این مقاله (دسامبر ۲۰۲۱)، این ویژگی هنوز به صورت «بتا» وجود دارد. لطفا نظرات و پیشنهادهای خودتان درباره‌ی وظایف AntiGate را در تیکت‌های پشتیبانی بنویسید.