Walmart — دومین فروشگاه اینترنتی بزرگ در ایالات متحده پس از Amazon است و دادههای آن برای کسبوکارهای تجارت الکترونیک به شدت حیاتی است: نظارت بر قیمتهای رقباء، پیگیری موجودیها، تحلیل تنوع محصولات. مشکل این است که Walmart از یک سیستم پیشرفته حفاظت از رباتها به نام PerimeterX استفاده میکند که 90٪ درخواستها از پارسرها را در صفحه اول مسدود میکند.
در این راهنما بررسی خواهیم کرد که کدام نوع پروکسیها واقعاً برای پارس کردن Walmart کار میکنند، چگونه چرخش آدرسهای IP را تنظیم کنیم، دور زدن fingerprinting مرورگر را انجام دهیم و یک سیستم پایدار جمعآوری دادهها بسازیم که پس از یک ساعت کار سقوط نکند.
چرا Walmart پارسرها را مسدود میکند: مکانیسمهای حفاظت PerimeterX
Walmart از سیستم حفاظت PerimeterX (که اکنون به HUMAN Security تغییر نام داده است) استفاده میکند — یکی از تهاجمیترین سیستمهای ضد ربات در بازار. این سیستم هر درخواست را بر اساس دهها پارامتر تحلیل میکند و ترافیک مشکوک را قبل از آنکه پارسر شما کد HTML صفحه را دریافت کند، مسدود میکند.
مکانیسمهای اصلی حفاظت Walmart:
1. تحلیل شهرت IP
PerimeterX هر آدرس IP را در پایگاه داده پروکسیهای شناخته شده، دیتاسنترها و VPNها بررسی میکند. اگر IP شما در این پایگاه باشد — شما مسدود خواهید شد یا CAPTCHA دریافت خواهید کرد. Walmart بهویژه IPهای ناشی از ارائهدهندگان ابری محبوب (AWS، Google Cloud، DigitalOcean) را به شدت فیلتر میکند.
2. تحلیل رفتاری
این سیستم پیگیری میکند که کاربر چگونه با صفحه تعامل دارد: حرکات ماوس، سرعت اسکرول، کلیکها. پارسرها در Selenium یا Puppeteer اغلب در اینجا شناسایی میشوند — آنها صفحات را خیلی سریع باز میکنند، بدون وقفههای طبیعی، و ماوس را حرکت نمیدهند.
3. TLS و HTTP fingerprinting
PerimeterX اثر انگشت TLS اتصال شما (ترتیب رمزها، گسترشها) و هدرهای درخواستهای HTTP را تحلیل میکند. کتابخانههای استاندارد Python (requests، urllib) اثر انگشتهای منحصر به فردی دارند که به راحتی شناسایی میشوند. حتی اگر User-Agent را تغییر داده باشید، سیستم عدم تطابق بین هدرها و مرورگر واقعی را مشاهده میکند.
4. چالشهای JavaScript
در صورت درخواست مشکوک، PerimeterX کد JavaScript ارسال میکند که بررسیهایی را در مرورگر انجام میدهد: دسترسی به Canvas API، WebGL، پارامترهای صفحه، فونتهای نصب شده. پارسرهای ساده HTTP (بدون موتور مرورگر) نمیتوانند این بررسیها را انجام دهند و مسدود میشوند.
چه اتفاقی در صورت مسدود شدن میافتد:
- HTTP 403 Forbidden — رایجترین پاسخ، به این معنی است که IP یا اثر انگشت شما در لیست سیاه است
- انتقال به صفحهای با CAPTCHA — سیستم مطمئن نیست، فرصتی برای اثبات اینکه شما انسان هستید میدهد
- صفحه خالی یا JSON با خطا — سرور اصلاً محتوا را ارائه نمیدهد
- مسدودیت موقت IP به مدت 15-60 دقیقه — در صورت پارس کردن تهاجمی از یک آدرس
نتیجه کلیدی: برای پارس کردن موفق Walmart به یک استراتژی جامع نیاز دارید که پروکسی فقط یکی از عناصر آن باشد. شما همچنین به یک موتور مرورگر مناسب، شبیهسازی رفتار انسانی و چرخش صحیح آدرسهای IP نیاز خواهید داشت.
کدام پروکسیها برای پارس کردن Walmart کار میکنند: مقایسه انواع
همه پروکسیها به یک اندازه برای دور زدن حفاظت Walmart مؤثر نیستند. بیایید چهار نوع اصلی و کاربرد آنها را برای پارس کردن بررسی کنیم.
| نوع پروکسی | کارایی برای Walmart | سرعت | هزینه | توصیه |
|---|---|---|---|---|
| پروکسیهای مسکونی | ⭐⭐⭐⭐⭐ عالی — IP کاربران واقعی، حداقل مسدودیتها |
متوسط (200-800 میلیثانیه) |
بالا (از $7-15/گیگابایت) |
بهینه برای تولید |
| پروکسیهای موبایل | ⭐⭐⭐⭐⭐ عالی — امتیاز اعتماد بالا، مسدودیتهای نادر |
پایین (500-1500 میلیثانیه) |
بسیار بالا (از $50-100/ماه برای IP) |
برای موارد پیچیده |
| پروکسیهای دیتاسنتر | ⭐⭐ بد — احتمال بالای مسدودیت (70-90٪) |
بالا (50-150 میلیثانیه) |
پایین (از $1-3/IP) |
توصیه نمیشود |
| پروکسیهای ISP | ⭐⭐⭐⭐ خوب — IPهای مسکونی ثابت |
بالا (80-200 میلیثانیه) |
متوسط (از $30-80/ماه برای IP) |
برای وظایف بلندمدت |
جزئیات بیشتر درباره هر نوع:
پروکسیهای مسکونی — استاندارد طلایی برای Walmart
این IPها از ارائهدهندگان اینترنت خانگی واقعی (Comcast، AT&T، Verizon در ایالات متحده) هستند. Walmart آنها را به عنوان خریداران عادی میبیند، بنابراین درصد مسدودیتها حداقل است — حدود 5-10٪ با تنظیمات صحیح. مزیت اصلی — استخرهای بزرگ آدرس (میلیونها IP) که امکان تنظیم چرخش مؤثر را فراهم میکند.
زمان استفاده: نظارت بر قیمتها در هزاران کالا، جمعآوری روزانه دادهها، پروژههای بلندمدت. برای پارس کردن Walmart، پروکسیهای مسکونی انتخاب بهینهای از نظر کارایی و هزینه هستند.
پروکسیهای موبایل — حداکثر قابلیت اطمینان
IPهای اپراتورهای موبایل (T-Mobile، Verizon Wireless) بالاترین امتیاز اعتماد را در سیستمهای ضد ربات دارند. دلیل این است که یک IP توسط هزاران کاربر واقعی (از طریق NAT اپراتور) استفاده میشود، بنابراین مسدود کردن آن = مسدود کردن هزاران خریدار. Walmart بهندرت IPهای موبایل را مسدود میکند.
زمان استفاده: اگر پروکسیهای مسکونی کار نمیکنند، اگر نیاز به پارس کردن بخشهای به شدت محافظت شده (برای مثال، قیمتها برای مناطق خاص) دارید، اگر بودجه اجازه میدهد. پروکسیهای موبایل تقریباً 100٪ درخواستهای موفق را ارائه میدهند، اما هزینه بیشتری دارند.
پروکسیهای دیتاسنتر — مناسب برای Walmart نیستند
IPهای سرورهای دیتاسنتر (AWS، OVH، Hetzner) به سرعت توسط PerimeterX شناسایی میشوند. حتی اگر IPهای "تمیز" خریداری کنید که قبلاً برای پارس کردن استفاده نشدهاند، سیستم هنوز هم میبیند که این یک دیتاسنتر است، نه یک ارائهدهنده خانگی. درصد مسدودیتها — 70-90٪.
تنها سناریوی استفاده: تست پارسر با حجم کم دادهها (10-50 صفحه). برای تولید بهطور قطعی مناسب نیستند.
پروکسیهای ISP (مسکونی ثابت) — اینها ترکیبی هستند: IPهای ارائهدهندگان خانگی، اما در دیتاسنترها قرار دارند و برای مدت طولانی (یک ماه و بیشتر) به شما اختصاص داده میشوند. آنها سریعتر از پروکسیهای مسکونی معمولی هستند، اما گرانتر و دارای استخر آدرس محدودی هستند. مناسب هستند اگر به IPهای پایدار برای پارس کردن بلندمدت از یک دسته خاص از کالاها نیاز دارید.
پروکسیهای مسکونی در مقابل پروکسیهای دیتاسنتر: چه چیزی برای کار شما مناسب است
با وجود اینکه ما قبلاً متوجه شدهایم که پروکسیهای مسکونی مؤثرتر هستند، بیایید بهطور دقیقتری به موقعیتهایی که هر نوع میتواند توجیهپذیر باشد بپردازیم و هزینه واقعی مالکیت را محاسبه کنیم.
سناریو 1: نظارت بر 10,000 کالا بهطور روزانه
با پروکسیهای مسکونی:
- میانگین اندازه صفحه کالا در Walmart: ~500 کیلوبایت
- 10,000 کالا × 500 کیلوبایت = 5 گیگابایت ترافیک در روز
- ترافیک ماهانه: 150 گیگابایت
- هزینه با $10/گیگابایت: $1,500/ماه
- درصد درخواستهای موفق: 90-95٪
- هزینه واقعی با احتساب تکرارها: ~$1,650/ماه
با پروکسیهای دیتاسنتر (بهطور نظری):
- هزینه 100 IP: ~$200/ماه
- درصد درخواستهای موفق: 10-30٪ (بقیه — مسدودیتها)
- نیاز به انجام 3-10 تلاش برای هر کالا
- ترافیک واقعی: 15-50 گیگابایت (به دلیل تکرارها)
- نتیجه: کار غیرممکن است — IP به سرعت در لیست سیاه قرار میگیرد، CAPTCHA در هر مرحله
سناریو 2: جمعآوری دادهها برای 500 کالا بهصورت یکباره
اگر شما نیاز دارید که یک بار دادهها را برای تحلیل بازار یا تحقیق جمعآوری کنید، میتوانید از رویکرد ترکیبی استفاده کنید:
- از پروکسیهای دیتاسنتر برای جمعآوری اولیه URLهای کالا (صفحات دستهبندی) استفاده کنید
- به پروکسیهای مسکونی برای دریافت اطلاعات دقیق درباره کالاها سوئیچ کنید
- هزینه: ~$50-100 برای یک کار یکباره
- زمان اجرا: 2-4 ساعت به جای 10-20 ساعت با دیتاسنترها
عوامل کلیدی انتخاب:
| معیار | مسکونی | دیتاسنتر |
|---|---|---|
| حجم دادهها | هر نوع — از 100 تا میلیونها صفحه | فقط حجمهای کوچک (تا 1000 صفحه) |
| تناوب | پارس روزانه/هفتگی | فقط کارهای یکباره |
| سرعت اجرا | پایدار — بدون تأخیر در تکرارها | غیرقابل پیشبینی — تکرارهای زیاد |
| قابلیت اطمینان | بالا — 90-95٪ موفقیت | پایین — 10-30٪ موفقیت |
| هزینه خطا | پایین — فقط برای ترافیک موفق هزینه میپردازید | بالا — زمان و پول را بر روی مسدودیتها از دست میدهید |
نتیجه: برای هرگونه کار جدی پارس کردن Walmart از پروکسیهای مسکونی یا موبایل استفاده کنید. پروکسیهای دیتاسنتر فقط برای تست منطق پارسر بر روی 10-50 صفحه قابل بررسی هستند، اما برای تولید بهطور قطعی مناسب نیستند. صرفهجویی در پروکسی منجر به از دست دادن زمان، اعصاب و در نهایت هزینه بیشتر خواهد شد.
استراتژیهای چرخش IP: فرکانس تغییر و استخرهای آدرس
حتی با پروکسیهای مسکونی نیز ممکن است مسدود شوید اگر چرخش آدرسهای IP به درستی تنظیم نشده باشد. PerimeterX الگوهای رفتاری را پیگیری میکند: اگر یک IP در یک دقیقه 100 صفحه کالا را درخواست کند — این به وضوح یک ربات است. استراتژی صحیح چرخش — کلید پارس پایدار بدون مسدودیتها است.
سه استراتژی اصلی چرخش:
1. چرخش برای هر درخواست (Rotating Proxies)
هر درخواست HTTP از طریق یک آدرس IP جدید انجام میشود. این حالت استاندارد کار اکثر ارائهدهندگان پروکسی مسکونی است.
مزایا:
- حداقل ریسک مسدودیت — هر IP فقط 1-2 درخواست انجام میدهد
- تنظیم آسان — ارائهدهنده خود استخر را مدیریت میکند
- میتوانید بهطور تهاجمی پارس کنید — صدها درخواست در دقیقه
معایب:
- مشکلات با سشنها — اگر سایت از کوکیها استفاده کند، هر درخواست = یک سشن جدید
- کندتر — برای ایجاد اتصال جدید 200-500 میلیثانیه زمان میبرد
زمان استفاده: برای پارس کردن صفحات کالاهای Walmart که نیاز به احراز هویت و سشن ندارند. این استراتژی بهینه برای اکثر وظایف نظارت بر قیمتها است.
2. سشنهای چسبنده (Sticky Sessions)
یک آدرس IP برای یک سری درخواستها در مدت زمان معین (معمولاً 5-30 دقیقه) استفاده میشود، سپس به یک IP جدید تغییر میکند.
مزایا:
- نگهداری سشنها و کوکیها — میتوانید با سبد خرید، احراز هویت کار کنید
- سریعتر — اتصال TCP دوباره استفاده میشود
- رفتار "طبیعیتر" برای سیستمهای ضد ربات
معایب:
- ریسک مسدودیت بالاتر — یک IP 10-50 درخواست انجام میدهد
- نیاز به کنترل محدودیتها — حداکثر 30-50 درخواست از یک IP
زمان استفاده: اگر نیاز به پارس کردن دادههایی دارید که نیاز به احراز هویت دارند (برای مثال، قیمتها برای کاربران ثبتنام شده)، یا اگر رفتار یک خریدار واقعی را شبیهسازی میکنید (بازدید از دسته → کالا → افزودن به سبد خرید).
3. استخر IPهای ثابت با چرخش دستی
شما 50-100 پروکسی مسکونی ثابت (پروکسیهای ISP) میگیرید و خودتان توزیع درخواستها را بین آنها مدیریت میکنید.
مزایا:
- کنترل کامل — شما میدانید که هر IP چند درخواست انجام داده است
- حداکثر سرعت — IPهای ثابت سریعتر از rotating هستند
- میتوانید IPها را "گرم کنید" — درخواستهای قانونی انجام دهید تا شهرت را افزایش دهید
معایب:
- تنظیم پیچیده — نیاز به نوشتن منطق توزیع درخواستها دارید
- گرانتر — پروکسیهای ISP هزینه $30-80 برای هر IP در ماه دارند
- ریسک از دست دادن IP — اگر یکی در لیست سیاه قرار گیرد، باید جایگزین شود
زمان استفاده: برای سیستمهای با بار بالا با حجم 100,000+ درخواست در روز، جایی که سرعت و ثبات حیاتی است. نیاز به تجربه در توسعه پارسرها دارد.
تنظیمات پیشنهادی برای Walmart:
برای نظارت بر قیمتها (پارس ساده صفحات کالا):
- نوع: پروکسیهای چرخشی با چرخش برای هر درخواست
- تأخیر بین درخواستها: 2-5 ثانیه
- همزمانی: 10-20 رشته
- ژئولوکیشن: ایالات متحده (ترجیحاً ایالتی که فروشگاههای فیزیکی Walmart در آن وجود دارد)
برای پارس کردن پیچیده (با احراز هویت، سبد خرید):
- نوع: سشنهای چسبنده با مدت زمان 10-15 دقیقه
- محدودیت درخواستها بر روی IP: حداکثر 30-40
- تأخیر بین درخواستها: 3-7 ثانیه (شبیهسازی انسان)
- همزمانی: 5-10 رشته (کمتر تهاجمی)
مهم: بسیاری از ارائهدهندگان پروکسی مسکونی اجازه میدهند که مدت زمان سشن را از طریق پارامترهای اتصال تنظیم کنید. به عنوان مثال، با افزودن session-15min به نام کاربری، شما یک سشن چسبنده به مدت 15 دقیقه دریافت خواهید کرد. این امکان را از ارائهدهنده خود تأیید کنید.
دور زدن fingerprinting: User-Agent، هدرها و اثر انگشت TLS
پروکسیها تنها نیمی از مشکل را حل میکنند — آنها به شما یک IP تمیز میدهند. اما PerimeterX تنها IP را تحلیل نمیکند، بلکه "اثر انگشت" مرورگر یا پارسر شما را نیز بررسی میکند. حتی با IP مسکونی نیز اگر HTTP-client شما به عنوان یک ربات به نظر برسد، مسدود خواهید شد.
PerimeterX چه چیزی را بررسی میکند:
1. User-Agent و هدرهای HTTP
کتابخانههای استاندارد (Python requests، Node.js axios) هدرهایی ارسال میکنند که به سرعت ربات را شناسایی میکنند. به عنوان مثال، User-Agent: python-requests/2.28.1 — این 100٪ مسدودیت است.
چه چیزی باید تغییر کند:
User-Agent— از نسخههای جدید Chrome/Firefox استفاده کنیدAccept— باید با نوع محتوا مطابقت داشته باشدAccept-Language— en-US برای پارس کردن Walmart ایالات متحدهAccept-Encoding— gzip، deflate، brReferer— صفحه قبلی (دستهبندی یا صفحه اصلی)Sec-Fetch-*— هدرهای Chrome برای حفاظت از CSRF
2. اثر انگشت TLS (JA3)
هر HTTP-client یک اثر انگشت TLS منحصر به فرد دارد — ترتیب رمزها، گسترشهای TLS، نسخه پروتکل. PerimeterX این اثر انگشت را با User-Agent مقایسه میکند: اگر شما "Chrome 120" را بنویسید، اما اثر انگشت TLS از Python باشد — شما مسدود میشوید.
راهحل:
- از کتابخانههایی با پشتیبانی از TLS سفارشی استفاده کنید:
curl-impersonate(Python)،tls-client(Go) - یا از یک مرورگر واقعی از طریق Selenium/Puppeteer استفاده کنید — آنها اثر انگشت TLS واقعی دارند
3. چالشهای JavaScript و fingerprinting Canvas
PerimeterX ممکن است کد JavaScript ارسال کند که بررسی میکند: آیا Canvas API، WebGL، چه فونتهایی نصب شدهاند، اندازه صفحه، timezone در دسترس است. پارسرهای ساده HTTP نمیتوانند این کد را اجرا کنند.
راهحل:
- از مرورگرهای headless استفاده کنید: Puppeteer، Playwright، Selenium
- حتماً حالت دور زدن شناسایی را فعال کنید:
puppeteer-extra-plugin-stealth - پارامترها را تصادفی کنید: اندازه پنجره، timezone، زبان مرورگر
نمونهای از هدرهای صحیح برای پارس کردن Walmart:
GET /ip/Product-Name/12345678 HTTP/1.1
Host: www.walmart.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Referer: https://www.walmart.com/browse/electronics/tv-video/3944_1060825
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
Connection: keep-alive
جزئیات مهم:
- ترتیب هدرها مهم است — مرورگرهای واقعی آنها را در یک ترتیب خاص ارسال میکنند. از کتابخانههایی استفاده کنید که این ترتیب را رعایت میکنند.
- کوکیها — اگر PerimeterX کوکی
_px3یا_pxvidرا تنظیم کرده باشد، حتماً آن را در درخواستهای بعدی ارسال کنید. این توکن سشن شما است. - HTTP/2 — Walmart از HTTP/2 استفاده میکند و عدم پشتیبانی از این پروتکل میتواند نشانهای از ربات باشد. اطمینان حاصل کنید که کلاینت شما از HTTP/2 پشتیبانی میکند.
- از هدرهای یکسان برای همه درخواستها استفاده نکنید — User-Agent را متنوع کنید، از استخر 10-20 نسخه مختلف مرورگر استفاده کنید.
محدودیت نرخ و تأخیرها: چگونه از تجاوز به محدودیتهای درخواستها جلوگیری کنیم
حتی با پروکسیها و هدرهای ایدهآل، اگر خیلی تهاجمی پارس کنید، مسدود خواهید شد. Walmart فرکانس درخواستها و الگوهای رفتاری را پیگیری میکند. یک کاربر واقعی نمیتواند 100 صفحه کالا را در یک دقیقه باز کند — سیستم ضد ربات این را درک میکند.
محدودیتهای پیشنهادی برای Walmart:
| نوع درخواست | تأخیر بین درخواستها | حداکثر درخواستها از یک IP | همزمانی |
|---|---|---|---|
| صفحات کالا | 2-5 ثانیه | 30-50 صفحه (با چرخش) | 10-20 رشته |
| صفحات دستهبندی | 3-7 ثانیه | 20-30 صفحه | 5-10 رشته |
| جستجو | 5-10 ثانیه | 10-15 درخواست | 3-5 رشته |
| API-اندپوینتها | 1-3 ثانیه | 50-100 درخواست | 20-30 رشته |
چرا تصادفیسازی تأخیرها مهم است:
اگر شما درخواستها را دقیقاً هر 3 ثانیه (3.000، 6.000، 9.000...) انجام دهید، سیستم ضد ربات الگو را شناسایی میکند. یک انسان واقعی نمیتواند به این اندازه دقیق باشد — او تغییرات خواهد داشت: 2.8 ثانیه، 3.4 ثانیه، 2.9 ثانیه.
پیادهسازی صحیح تأخیر (Python):
import random
import time
# نادرست — تأخیر ثابت
time.sleep(3)
# درست — تأخیر تصادفی
delay = random.uniform(2.0, 5.0) # از 2 تا 5 ثانیه
time.sleep(delay)
استراتژیهای مدیریت بار:
1. محدودیت نرخ تطبیقی
درصد درخواستهای موفق را پیگیری کنید. اگر شروع به دریافت 403 یا CAPTCHA کردید — بهطور خودکار تأخیرها را افزایش دهید و همزمانی را کاهش دهید.
success_rate = successful_requests / total_requests
if success_rate < 0.8: # کمتر از 80٪ موفقیت
delay_multiplier *= 1.5 # تأخیرها را افزایش دهید
parallel_workers -= 2 # رشتهها را کاهش دهید
elif success_rate > 0.95: # بیشتر از 95٪ موفقیت
delay_multiplier *= 0.9 # میتوانیم سرعت بگیریم
parallel_workers += 1
2. توزیع بر اساس زمان روز
در ساعات اوج فعالیت کاربران واقعی (عصر ایالات متحده، 18:00-22:00 EST) پارس کنید. در این زمان ترافیک شما با ترافیک قانونی ترکیب میشود و سیستم ضد ربات کمتر تهاجمی است. در شب (2:00-6:00 EST) حفاظت ممکن است سختتر باشد، زیرا کاربران واقعی کمتری وجود دارند.
3. گرم کردن آدرسهای IP
قبل از شروع پارس کردن انبوه، آدرسهای IP را با درخواستهای قانونی "گرم کنید": صفحه اصلی را باز کنید، چند دسته را بررسی کنید، جستجو کنید. این تاریخچه فعالیت ایجاد میکند و امتیاز اعتماد IP را افزایش میدهد.
# توالی گرم کردن برای یک IP جدید
1. GET https://www.walmart.com/ # صفحه اصلی
2. تأخیر 3-5 ثانیه
3. GET https://www.walmart.com/browse/electronics # دستهبندی
4. تأخیر 4-7 ثانیه
5. GET https://www.walmart.com/search?q=laptop # جستجو
6. تأخیر 3-6 ثانیه
# حالا میتوانید کالاهای هدف را پارس کنید
خطای بحرانی: از یک Referer یکسان برای همه درخواستها استفاده نکنید. اگر شما 1000 کالا را پارس کنید و همه آنها در هدر یک Referer یکسان داشته باشند — این یک الگوی واضح ربات است. وار