اصل ماجرا
نویسنده یک اسکریپت پایتون به نام InstagramWrapperPostScraper ساخت که با مرورگر Edge واقعی کار میکند و عکس، ویدیو و کپشنهای پروفایلهای عمومی اینستاگرام را ذخیره میکند. برای جلوگیری از مسدود شدن، اسکرول تصادفی، توقفهای کوتاه و بررسی ساختاری صفحات چالشزا اعمال شده. خروجی بهصورت پوشههای منظم و شامل توضیحات هر پست ذخیره میشود.
متن کامل ترجمهشده
به جلو: این یک ابزار شخصی / تحقیق برای دانلود از پروفایل عمومی Instagram است. از آن با مسئولیت استفاده کنید و در زمینه شرایط خدمات Instagram و قوانین محلی شما. این پست در مورد مهندسی است - به طور خاص، آنچه که برای انجام اتوماسیون مرورگر کمتر به عنوان یک بوته رفتار می کند - نه در مورد از بین بردن هر کسی. از دست دادن هر پلت فرم اجتماعی مدرن کمتر یک مشکل حل و بیشتر یک رفتار است. HTML بخش آسان است. قسمت سخت این است که سایت به طور فعال نگاه می کند که چگونه شما عمل می کنید، و لحظه ای که شما عمل می کنید مانند یک اسکرپورت - بلافاصله به پایین چرخش، درخواست ها در سرعت ماشین، هیچ استراحت - شما یک صفحه چالش را ضربه و شما انجام می دهید. من InstagramWrapperPostScraper به عنوان یک Python + Selenium که ابزار را اجرا می کند یکچرا یک مرورگر واقعی به جای یک API یا HTTP سه روش گسترده ای وجود دارد تا داده ها را از Instagram خارج کنید، و آنها به طور متفاوت شکست می دهند: - روش های API به سرعت در حدود نرخ اجرا می شود و نیاز به اعتبارات / تیکن هایی است که از بین می روند - کلاهبرداری HTTP ساده ضعیف و غیر معمول تشخیص داده می شود - هیچ اجرا JS، نمونه های درخواست آشکار - رانندگی یک مرورگر واقعی (این رویکرد) صفحه واقعی JS را اجرا می کند، مثل یک جلسه انسان را اجرا می کند و می تواند از طریق بلوک های محدودیت نرخ موقت کار کند تجارت: یک مرورگر واقعی آهسته تر و سنگین تر است. اما برای یک ابزار دانلود در مقیاس شخصی، اعتبار سرعت را شکست می دهد. قسمت واقعی علاقه مند: رفتار انسانی (این رویکرد) آخرین نسخه (0..02) تقریبا تمامااین را به طور عمدتا انجام نمی دهد: - مراحل چرخش تصادفی - آن را به 50-90٪ از پورت مشاهده در یک زمان، نه به طور مستقیم به پایین می چرخد - گاهی اوقات چرخش بازگرداندن - گاهی اوقات آن را به عنوان یک انسان دوباره چیزی می خواند - استراحت های تصادفی - 2-5 ثانیه بین اقدامات به جای شلیک - انتظار اولیه طولانی تر - 4-7 ثانیه زمانی که برای اولین بار یک پروفایل را باز کنید (از 3-5 ثانیه به بالا) - بررسی چالش های دوره ای - هر 10 چرخش آن را بررسی می کند که آیا یک صفحه محدودیت نرخ / چالش ظاهر شده است که آخرین نقطه را به سایر 0.0.2 بهبود ارتباط می دهد: یک روش اختصاصی _is_challenge_page() که captcha/challenge صفحات را شناسایی می کند با بررسی گزینه های URL plus DOM،همچنین تشخیص پایان پروفایل بهتر است - 5 بار قبل از پایان به پایان رسیده است، به جای اینکه پس از یک تلاش از دست بدهد - و یک راه بازگرداندن کاروئل که URL های دیپلماتیک slide را مدیریت می کند و خروجی ها را مسدود می کند. ساختار خروجی خالص یکی از چیزهایی که من در مورد آن فکر می کردم: دانلود ها باید قابل استفاده باشند، نه یک دیپلماتیک فرش. هر پست خود را دریافت می کند، کاروئل ها نظم دیپلماتیک خود را حفظ می کنند و هر پست تحت عنوان خود را همراه با رسانه ها ذخیره می کند: دانلود ها/ └── username/ ├─ تصاویر/ │ ├─ post__1/ │ ├─ نام کاربری_1.jpg │ └─ description.t │ └─ post_2/ │ ├ username─────به طور مستقیم از README: - پروفایل عمومی فقط - پروفایل خصوصی نیاز به حساب scraper به دنبال آنها - Edge فقط - هیچ پشتیبانی از Chrome یا Firefox؛ آن را بر روی Edge WebDriver - Instagram UI تغییر اختیارات شکستن - هنگامی که این اتفاق می افتد، به روز رسانی Selenium / Edge و بازگردانید. این مالیات دائمی در از بین بردن هر چیزی که شما کنترل نمی کنید - محدودیت نرخ هنوز در نظر گرفته می شود - در پروفایل های بسیار بزرگ (1000+ پست) انتظار توقف و بازگرداندن است؛ رفتار مانند انسان را کاهش می دهد، آن را به شما غیرقانونی نمی کند - هیچ پشتیبانی پروکسی - هر درخواست از IP واقعی شما است که دو آخرین به طور عمدی بر روی برچسب است. این یک ابزار نیست که به عنوان غیر قابل تشخیص است، و من از هر کاری که انجام می شود مشکوک است. ازانتظار تصادفی، چرخیدن جزئی، تشخیص ساختار (که بر اساس string نیست) و بازگرداندن با بازگرداندن تفاوت بین یک اسکرپت که اجرا می شود و یک اسکرپت که ادامه می دهد. لینک ها: اگر شما اتوماتیک مرورگر ساخته شده است که نیاز به زنده ماندن یک سایت دشمنانه، که اغلب تغییر می کند، من می خواهم بشنوم که کدام اسکرپت های رفتار در واقع برای شما چسب را حرکت می کند.
چرا مهمه؟
پیش از این اسکرپینگ اینستاگرام بیشتر به درخواستهای سریع و ثابت وابسته بود که بهسرعت مسدود میشد. این ابزار با شبیهسازی رفتار انسانی، شانس عبور از محدودیتهای موقت را بالا میبرد. توسعهدهندگان ابزارهای خودکار وب، تیمهای دادهکاوی و کاربران شخصی که میخواهند محتوا را ذخیره کنند، میتوانند از این روش بهره ببرند. چون روش جدید باعث میشود اسکریپتها پایدارتر و کمتر تحت بلاکهای سایت قرار بگیرند، زمان و هزینه رفع خطاها کاهش مییابد.
به درد کی میخوره؟
• توسعهدهندگان پایتون • مهندسان داده • پژوهشگران رسانههای اجتماعی • تیمهای خودکارسازی وب
تو عمل چی کار کنیم؟
با مطالعه این مقاله میتوانید اسکریپت خود را طوری تنظیم کنید که رفتار مرورگر شبیه کاربر واقعی باشد؛ یعنی اسکرولهای جزئی، توقفهای تصادفی و تشخیص ساختاری صفحات چالشزا. این کار باعث میشود ابزارهای جمعآوری داده از سایتهای محافظتشده کمتر مسدود شوند و بتوانید دادههای مورد نیاز را بهصورت منظم ذخیره کنید.
نظر Blue IT News
پیشنهاد میکنیم قبل از استفاده از این ابزار، قوانین استفاده از اینستاگرام و قوانین محلی را بهدقت مرور کنید؛ هرگونه سوءاستفاده میتواند منجر به مسدود حساب یا پیگرد قانونی شود.
این صفحه ترجمه و تفسیر کاملی از گزارش اصلی Dev است که توسط تیم تحریریه بلو آی تی نیوز به فارسی ترجمه و تحلیل شده. برای مشاهده نسخه اصلی، به منبع مراجعه کنید.