یک پروکسی چرخشی خریدهاید، اسکریپت خود را به آن وصل کردهاید و سه درخواست پشت سر هم به یک سرویس نمایش IP فرستادهاید. هر سه بار همان آدرس برگشته است. یا برعکس: اسکریپتی که وارد پنل خودتان میشود در صفحه دوم دوباره به صفحه ورود افتاده است، چون IP خروجی وسط نشست عوض شده است. در هیچکدام از این دو حالت پروکسی خراب نیست. مشکل این است که ساختار کار بدون دانستن اینکه چه رویدادی چرخش را فعال میکند چیده شده است.
در این نوشته چرخش IP را کوتاه تعریف میکنیم و به موضوع اصلی میرسیم، یعنی اینکه فرایند چگونه پیش میرود: مسیری که یک درخواست پشت گیتوی (gateway) طی میکند، سه حالت چرخش (بهازای هر درخواست، زمانی، نشست ثابت)، اصطلاحهایی که با هم اشتباه میشوند، استفاده دوباره از اتصال که رایجترین دلیل عوض نشدن IP است و چیزهایی که چرخش آنها را خراب میکند. در پایان یک نمونه کوتاه و آزموده Python برای راستیآزمایی چرخش و یک راهنمای انتخاب آمده است.
چرخش IP چیست؟
چرخش IP (که چرخش پروکسی هم گفته میشود) یعنی IP خروجی درخواستهای شبکه روی یک آدرس نمیماند و میان آدرسهای یک استخر IP عوض میشود. سرویسی که این کار را به جای شما انجام میدهد پروکسی چرخشی یا به انگلیسی rotating proxy نام دارد؛ تعریف محصول، استخر و گزینههای هدفگیری در همان صفحه آمده است. اینجا به محصول نمیپردازیم، به فرایند میپردازیم: IP چه زمانی عوض میشود، چه زمانی عوض نمیشود و چه کسی این را تعیین میکند.
این مفهوم چندان ناآشنا نیست. IP پویای اینترنت خانگی شما هم نوعی چرخش است: ارائهدهنده اینترنت هر از گاهی آدرس شما را عوض میکند، اما اینکه چه زمانی عوض شود و چه آدرسی برسد در اختیار شما نیست. این بخش را در نوشته تفاوت IP ثابت و IP پویا و نوشته چگونه آدرس IP را تغییر دهیم؟ توضیح دادهایم. تفاوت چرخش پروکسی این است که کنترل در دست شماست: تعداد دفعات تغییر، کشور و اینکه کدام درخواستها از یک آدرس بیرون بروند را خودتان انتخاب میکنید.
چرخش چه کاربردی دارد و چه کاربردی ندارد؟
چرخش سه هدف مشروع دارد:
- پخش کردن بار. کاری که صفحههای عمومی صدها سایت را گردآوری میکند، اگر همه ترافیک را از یک آدرس بیرون بفرستد، درخواستهایی روی آن آدرس میاندازد که هیچ بازدیدکننده واقعی نمیتواند تولید کند. چرخش بار هر آدرس را در اندازه معقول نگه میدارد.
- دیدن محتوا بر پایه موقعیت. قیمت، موجودی و نتایج جستوجو با کشور بازدیدکننده تغییر میکند. اگر استخر را روی یک کشور یا شهر ثابت کنید و درون همان موقعیت بچرخید، نمای واقعی آن بازار را میبینید.
- جدا کردن نشستها. هر کار مستقل (حساب مشتریهای مختلف، سناریوهای آزمون مختلف) از آدرس خودش بیرون میرود و ردّ یکی به دیگری نمیرسد.
جایی که چرخش کاربردی ندارد هم روشن است. اگر سایت با 429 از شما خواسته سرعت را کم کنید، مسیری را در robots.txt بسته یا در شرایط استفاده دسترسی خودکار را ممنوع کرده است، عوض کردن IP و ادامه دادن با همان سرعت مشکل را حل نمیکند؛ این کار نادیده گرفتن خواستهای است که صاحب سایت آشکارا بیان کرده است. چارچوب کامل در نوشته وب اسکرپینگ بدون مسدود شدن آمده و واکنش درست به 429 در نوشته خطای 429 Too Many Requests و محدودیت نرخ.
چرخش از راه گیتوی (backconnect) چگونه کار میکند؟
در چرخش به شیوه قدیمی یک فهرست پروکسی در دست دارید و کد شما آدرس بعدی را انتخاب میکند. در مدل گیتوی فهرست نزد شما نیست. به یک آدرس host:port وصل میشوید و استخر پشت آن را ارائهدهنده مدیریت میکند. این معماری backconnect نام دارد. مسیر یک درخواست HTTPS چنین است:
- کلاینت به گیتوی وصل میشود. اسکریپت شما یک اتصال TCP به نقطه اتصالی ثابت مانند
pr.proxynet.io:8000باز میکند. - اطلاعات ورود و پارامترها خوانده میشود. گیتوی مقدار
user:passرا در هدرProxy-Authorizationبررسی میکند. ترجیحهایی مانند کشور، شهر و شناسه نشست هم در همین مرحله و از پارامترهایی که به نام کاربری افزوده شده خوانده میشود. دو روش احراز هویت در نوشته احراز هویت پروکسی: نام کاربری و رمز یا لیست سفید IP آمده است. - استخر پالایش میشود. اگر موقعیت هدف داده باشید، گیتوی فقط خروجیهایی را که با آن معیار جور هستند نامزد میداند. چرخش درون همین زیرمجموعه انجام میشود.
- گره خروجی انتخاب میشود. بسته به حالت چرخش یا خروجی تازهای اختصاص مییابد یا خروجیای که پیشتر به نشست شما وصل شده دوباره به کار میرود. همین گام سه حالت چرخش را از هم جدا میکند.
- تونل برقرار میشود. گیتوی از راه خروجی انتخابشده به مقصد وصل میشود و به کلاینت
200 Connection Establishedبرمیگرداند. دستدهی TLS پس از آن و میان کلاینت و سایت مقصد انجام میشود. - ترافیک منتقل میشود. سایت مقصد درخواست را چنان میبیند که از IP گره خروجی آمده است. نه آدرس گیتوی و نه آدرس شما به مقصد نمیرسد.
نخستین خطهایی که کلاینت به گیتوی میفرستد چنین شکلی دارد:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
Proxy-Authorization: Basic dXNlcjpwYXNzمتد CONNECT در بخش 9.3.6 از RFC 9110 تعریف شده و نکته مهمی در آن نهفته است: پس از برقرار شدن تونل، پروکسی فقط بایت جابهجا میکند. درخواستهای HTTPS را که از درون تونل میگذرند تکتک نمیبیند. IP خروجی هنگام برقرار شدن تونل انتخاب میشود و تا وقتی تونل باز است عوض نمیشود. به همین دلیل معنای عملی «IP تازه در هر درخواست» همان «IP تازه در هر اتصال تازه» است. در HTTP بدون رمزگذاری پروکسی هر درخواست را جداگانه میبیند و آنجا تغییر واقعی بهازای هر درخواست شدنی است؛ اما چون امروز بیشتر سایتها با HTTPS کار میکنند، اتصال را مبنا بگیرید.
سه حالت چرخش: بهازای هر درخواست، زمانی و نشست ثابت
حالتها بر این اساس از هم جدا میشوند که چه رویدادی تصمیم «خروجی تازه یا خروجی قبلی» را در گام چهارم فعال میکند.
چرخش بهازای هر درخواست
هر اتصال تازهای که به گیتوی باز شود خروجی متفاوتی از استخر میگیرد. کلاینت هیچ وضعیتی نگه نمیدارد و گیتوی هم چیزی را برای شما به خاطر نمیسپارد. این حالت مناسب کارهایی است که صفحههای پرشمار و مستقل از هم را گردآوری میکنند: هر صفحه محصول یک درخواست است و لازم نیست درخواست بعدی از همان آدرس بیاید. بهای آن یک دستدهی تازه TCP و TLS در هر درخواست است و تأخیر نسبت به ساختاری که اتصال را دوباره به کار میبرد بالاتر میرود.
چرخش زمانی
IP خروجی با بازهای مشخص عوض میشود. تا پایان بازه همه اتصالهایی که باز میکنید از یک آدرس بیرون میروند و با پایان آن همگی با هم به آدرس تازه میروند. عامل تغییر ساعت است، نه درخواستهای شما. این حالت در پورتهای پروکسی موبایل که روی یک مودم یا یک دستگاه کار میکنند رایج است: وقتی دستگاه دوباره به شبکه اپراتور وصل میشود، IP تازه میشود. راهاندازی آن ساده است، اما نمیتوانید انتخاب کنید لحظه تغییر به کجای کارتان بیفتد.
نشست ثابت (sticky)
یک شناسه نشست (session ID) به نام کاربری میافزایید. اتصالهایی که با یک شناسه میآیند به یک خروجی وصل میشوند و شناسههای مختلف به خروجیهای مختلف. اینکه نشست چه مدت روی همان IP بماند از پنل انتخاب میشود، بین 1 تا 60 دقیقه؛ با پایان این مدت یا با عوض کردن شناسه، گیتوی خروجی تازهای اختصاص میدهد. تفاوت آن با چرخش زمانی این است که گروهبندی را شما انجام میدهید: اگر به هر یک از بیست کار موازی شناسه جداگانه بدهید، هر کدام با آدرس ثابت خودش کنار بقیه کار میکند. این حالت مناسب کارهایی است که سرور در آنها وضعیت نگه میدارد، مانند پنلهای نیازمند ورود، روند سبد خرید و صفحهبندی. بخش محصول در صفحه پروکسی با نشست ثابت آمده است.
یک محدودیت هم دارد: در استخرهای مسکونی و موبایل گره خروجی یک دستگاه واقعی است و ممکن است از شبکه جدا شود. در این صورت گیتوی نشست را پیش از پایان مدت به خروجی دیگری میبرد. نشست ثابت یعنی «بکوش در این مدت همان IP را نگه بداری» و تضمین نیست. برای کاری که پیوستگی قطعی میخواهد از پروکسی استاتیک استفاده میشود که آدرس آن به خود شما اختصاص دارد.
| بهازای هر درخواست | زمانی | نشست ثابت | استاتیک (برای مقایسه) | |
|---|---|---|---|---|
| رویدادی که IP را عوض میکند | هر اتصال تازه | پایان بازه | عوض شدن شناسه نشست یا پایان مدت | عوض نمیشود |
| کنترل در دست کیست | گیتوی | ساعت | شما | هیچکس |
| روندهای دارای وضعیت | خراب میشوند | در لحظه تغییر خراب میشوند | حفظ میشوند | حفظ میشوند |
| در کارهای موازی | هر اتصال یک IP جدا | همه روی یک IP | هر شناسه یک IP جدا | به تعداد IPهای شما |
| کار نمونه | خواندن انبوه صفحههای مستقل | پورت موبایل تکدستگاهی | ورود، سبد خرید، صفحهبندی | فهرست مجاز API، حساب بلندمدت |
اصطلاحها: rotating proxy، backconnect، sticky و بقیه
اصطلاحها زیاد با هم اشتباه میشوند، چون به یک چیز چند نام دادهاند و به چیزهای مختلف یک نام. در منابع فارسی «پروکسی چرخشی»، «پروکسی چرخان» و «rotating proxy» یک محصول هستند.
| اصطلاح | چه چیزی را بیان میکند | با چه چیزی اشتباه میشود |
|---|---|---|
| چرخش IP / چرخش پروکسی | فرایند: عوض شدن IP خروجی درون استخر | نام محصول پنداشته میشود |
| پروکسی چرخشی / rotating proxy | محصول: سرویس پروکسی که چرخش را در گیتوی انجام میدهد | فهرست پروکسی |
| Backconnect | معماری: یک نقطه اتصال و استخری در پشت آن | نوع جداگانهای از پروکسی پنداشته میشود، حال آنکه شیوه کار پروکسی چرخشی است |
| گیتوی (gateway) | همان host:port که به آن وصل میشوید؛ سروری که خروجی را انتخاب میکند | IP خروجی. سایت مقصد آدرس گیتوی را نمیبیند |
| گره خروجی / IP خروجی | آدرسی که سایت مقصد میبیند | آدرس گیتوی |
| استخر IP | مجموعه آدرسهایی که گیتوی از میانشان انتخاب میکند | آدرسهای متعلق به شما. استخر اشتراکی است |
| نشست ثابت | وصل ماندن یک شناسه نشست به یک خروجی برای مدتی | IP استاتیک. نشست ثابت موقتی است |
| پروکسی استاتیک | آدرسی که به شما اختصاص دارد و عوض نمیشود | نشست ثابت طولانی |
| فهرست پروکسی | رشتهای از آدرسهای ثابت که با کد خودتان میچرخانید | پروکسی چرخشی |
یک هشدار: در جستوجوی «sticky session» مستندات متعادلکننده بار هم میآید. آنجا این اصطلاح یعنی یک بازدیدکننده همیشه به همان سرور پشتی هدایت شود. منطق یکی است و جهت وارونه: در متعادلکننده بار ترافیک ورودی ثابت میشود و در پروکسی ترافیک خروجی.
چرخش را کد انجام دهد یا گیتوی؟
اگر فهرستی از آدرسهای ثابت متعلق به خودتان دارید، چرخش را کد شما انجام میدهد: پیش از هر درخواست آدرس بعدی فهرست یا یک آدرس تصادفی انتخاب میشود. انتخاب ترتیبی بار را برابر تقسیم میکند؛ انتخاب تصادفی به نگه داشتن شمارنده مشترک میان کارهای موازی نیاز ندارد. بیرون گذاشتن آدرسی که پاسخ نمیدهد و محدود کردن سرعت هر آدرس هم بر عهده شماست. کد Python هر دو روش را گام به گام با Requests در نوشته چرخاندن پروکسی در Python آوردهایم و اینجا دوباره نمینویسیم.
در مدل گیتوی همه این کارها به طرف مقابل میرود. در کد شما یک آدرس پروکسی میماند و حالت چرخش با پارامترهای نام کاربری انتخاب میشود. در عوض آدرسها را تکتک نمیشناسید: از پیش نمیدانید درخواست بعدی از کدام IP بیرون میرود و فقط کشور، شهر و رفتار نشست را تعیین میکنید. برای کار کوچکی که با چند آدرس انجام میشود فهرست کافی است؛ هرچه استخر بزرگتر شود، نگهداری فهرست از خود کار وقت بیشتری میگیرد.
چرا IP عوض نشد؟ استفاده دوباره از اتصال
وقتی چرخش بهازای هر درخواست روشن است و همیشه یک IP میبینید، رایجترین دلیل پروکسی نیست، کلاینت شماست. در HTTP/1.1 اتصالها بهطور پیشفرض ماندگارند (RFC 9112، بخش 9.3): کلاینت پس از گرفتن پاسخ همان اتصال TCP را برای درخواست بعدی باز نگه میدارد. پشت پروکسی این یعنی همان تونل CONNECT دوباره به کار میرود. چون خروجی تونل هنگام برقرار شدن آن انتخاب میشود، گیتوی لحظهای برای چرخش پیدا نمیکند.
کلاینتهایی که اتصال را دوباره به کار میبرند بیش از آناند که گمان میکنید. در Python Requests شیء Session این کار را خودبهخود انجام میدهد؛ مستندات Requests میگوید keep-alive درون نشست خودکار است. Client در HTTPX، ClientSession در AIOHTTP، agentهای دارای keep-alive روشن در Node.js و همه مرورگرها همین رفتار را دارند. تفاوت کتابخانهها در نوشته مقایسه HTTPX، Requests و AIOHTTP آمده است.
اینکه چه کنید به خواسته شما بستگی دارد:
- اگر در هر درخواست IP تازه میخواهید، برای هر درخواست اتصال تازه باز کنید یا هدر
Connection: closeرا به درخواست بیفزایید. مقصد پس از پاسخ اتصال را میبندد و تونل هم با آن بسته میشود. به این ترتیب هزینه دستدهی دوباره در هر بار را پذیرفتهاید. - اگر میخواهید روی همان IP بمانید، به keep-alive تکیه نکنید. اتصال ممکن است با پایان مهلت، از سوی سرور یا با یک تلاش دوباره قطع شود و اتصال تازه IP تازه میآورد. پیوستگی را با شناسه نشست، یعنی با نشست ثابت، بسازید.
- در خودکارسازی مرورگر یک صفحه برای دریافت منابعش اتصالهای موازی فراوانی باز میکند. در چرخش بهازای هر درخواست، HTML یک صفحه از یک آدرس و تصویرهایش از آدرسهای دیگر درخواست میشود. هنگام کار با مرورگر از نشست ثابت استفاده کنید؛ راهاندازی آن در نوشته Playwright چیست و چگونه با پروکسی استفاده میشود؟ آمده است.
راستیآزمایی چرخش: سه درخواست پشت سر هم
راه دیدن اینکه ساختار شما همانطور که انتظار دارید رفتار میکند این است که چند درخواست پشت سر هم به سرویسی بفرستید که IP خروجی شما را در پاسخ برمیگرداند. نمونه زیر همان سه درخواست را به دو شکل میفرستد: نخست هر بار با اتصال تازه و سپس از راه یک Session.
import requests
PROXY = "http://user:pass@pr.proxynet.io:8000"
PROXIES = {"http": PROXY, "https": PROXY}
IP_ECHO = "https://api.ipify.org"
def new_connection_each_time(count=3):
ips = []
for _ in range(count):
# Call without a session: each request opens and closes its own connection
response = requests.get(IP_ECHO, proxies=PROXIES, timeout=20)
ips.append(response.text.strip())
return ips
def shared_session(count=3):
ips = []
with requests.Session() as session:
session.proxies.update(PROXIES)
for _ in range(count):
# Same session: the tunnel opened by the first request is reused
response = session.get(IP_ECHO, timeout=20)
ips.append(response.text.strip())
return ips
def report(label, ips):
print(f"{label}: {ips} -> {len(set(ips))} distinct IPs")
report("new connection each time", new_connection_each_time())
report("shared session (keep-alive)", shared_session())در گیتویای که بهازای هر درخواست میچرخد خروجی مورد انتظار چنین شکلی دارد (آدرسها از بازههای نمونهای هستند که برای مستندسازی کنار گذاشته شدهاند):
new connection each time: ['203.0.113.24', '198.51.100.7', '203.0.113.181'] -> 3 distinct IPs
shared session (keep-alive): ['198.51.100.92', '198.51.100.92', '198.51.100.92'] -> 1 distinct IPsهنگام آزمودن این نمونه روی یک پروکسی آزمایشی محلی، در گزارش پروکسی دیدیم که تابع نخست سه تونل CONNECT جداگانه و تابع دوم یک تونل باز میکند؛ وقتی هدر Connection: close به Session افزوده شد، شمار تونلها دوباره به سه رسید. اگر در خط نخست هم یک IP میبینید، با نام کاربری نشست ثابت یا با یک آدرس استاتیک وصل شدهاید. برای بررسی کشور IP خروجی و نشتیها به نوشته آیا پروکسی کار میکند؟ چگونه پروکسی را آزمایش کنیم نگاه کنید.
پروکسی موبایل چرخشی چگونه کار میکند؟
با شنیدن «پروکسی موبایل چرخشی» میزی پر از گوشی به ذهن میآید، اما سازوکار اصلی در شبکه اپراتور است. اپراتورهای موبایل یک آدرس عمومی IPv4 را همزمان میان مشترکان زیادی تقسیم میکنند (CGNAT)؛ وقتی دستگاهی دوباره به شبکه وصل میشود، ممکن است آدرس دیگری از استخر اپراتور بگیرد. چرخش پروکسی موبایل بر همین رفتار تکیه دارد: یا یک دستگاه در بازههای مشخص دوباره وصل میشود (چرخش زمانی) یا گیتوی میان دستگاههای پرشمار انتخاب میکند. شیوه کار CGNAT را در نوشته CGNAT چیست، چگونه تشخیص دهیم و چطور از آن خارج شویم؟ توضیح دادهایم.
این دو پیامد عملی دارد. نخست، یک IP خروجی موبایل در همان لحظه با مشترکان واقعی مشترک است؛ استفاده سنگین از آن آدرس فقط بر شما اثر نمیگذارد و بر آنها هم اثر دارد، پس در استخر موبایل سرعت پایین یک ادب ساده نیست، الزام است. دوم، در استخر موبایل «IP تازه» همیشه به معنای آدرسی نیست که پیشتر ندیدهاید: استخر اپراتور محدود است و همان آدرس ممکن است دوباره به شما برسد. بخش محصول در صفحه پروکسی موبایل آمده است.
چیزهایی که چرخش خراب میکند
با روشن شدن چرخش چند چیز بیصدا خراب میشود. وجه مشترک همه آنها این است که سرور شما را با چیزی جز IP هم میشناسد.
- ناهمخوانی کوکی و IP. مخزن کوکی شما همان میماند و IP در هر درخواست عوض میشود. سایت همان کوکی نشست را در چند دقیقه از شهرهای مختلف میبیند؛ منطق امنیتی نشست را میبندد یا تأیید دوباره میخواهد. قاعده ساده است: یک مخزن کوکی، یک شناسه نشست، یک IP. طراحی کارهایی که به ورود با حساب خودتان نیاز دارند در نوشته ورود، نشست و کوکی در Python آمده است.
- نشستی که وسط صفحهبندی قطع میشود. نتایج جستوجو و فهرستهای فیلترشده اغلب به وضعیتی وابستهاند که روی سرور نگه داشته میشود (نشانگر، نشست جستوجو). اگر IP در صفحه پنجم عوض شود، سایت ممکن است شما را به صفحه نخست برگرداند یا همان رکوردها را دوباره بدهد؛ داده ناقص یا تکراری میشود و هیچ کد خطایی نمیبینید. جزئیات در نوشته صفحهبندی در وب اسکرپینگ آمده است.
- چرخش بدون موقعیت هدف. اگر هدفی تعیین نکنید در کل استخر میچرخید: یک درخواست از آلمان بیرون میرود و بعدی از برزیل. قیمتها با واحد پول دیگری میآیند، صفحهها به زبان دیگری و دادهای که گرد آوردهاید با خودش قابل مقایسه نخواهد بود.
- شمارندههایی که به IP وابسته نیستند. اگر محدودیت نرخ بر پایه حساب، کوکی یا کلید API شمرده شود، چرخش چیزی را تغییر نمیدهد. اینکه در برابر هر کد چه باید کرد را در نوشته کدهای وضعیت HTTP در وب اسکرپینگ گرد آوردهایم.
موارد استفاده
- پایش قیمت و موجودی در سایتهای پرشمار. هر صفحه محصول یک درخواست مستقل است؛ کشور ثابت میشود و حالت بهازای هر درخواست انتخاب میشود. طراحی آن در صفحه راهکار پایش قیمت و روشها در نوشته رصد قیمت رقبا در فروشگاه اینترنتی آمده است.
- گردآوری کاتالوگها و آگهیهای عمومی. همزمانی پایین برای هر سایت و چرخش برای پخش کردن بار: راهکار استخراج داده.
- بررسی نما بر پایه موقعیت. برای اینکه از راه اتصالهای خانگی ببینید یک تبلیغ، قیمت یا صفحه از شهری مشخص چگونه دیده میشود: پروکسی مسکونی.
- پنلهایی که با حسابهای خودتان در آنها کار میکنید. برای هر حساب یک شناسه نشست و همان IP در طول آن نشست: نشست ثابت.
- APIهایی که فهرست مجاز IP میخواهند. اگر طرف مقابل قرار است آدرس شما را به فهرستش بیفزاید، چرخش سودی ندارد و آدرس نباید عوض شود: IP ثابت برای دسترسی به API.
خطاهای رایج
- انتظار چرخش بهازای هر درخواست با
Session. نشست اتصال را دوباره به کار میبرد و IP تا بسته شدن تونل همان میماند. - دادن یک شناسه نشست به همه کارهای موازی. همه روی یک IP انباشته میشوند و فایده پخش بار از دست میرود.
- گذاشتن چرخش به جای محدودیت سرعت. آدرس عوض میشود اما بار کل روی مقصد همان است؛ سقف همزمانی برای هر سایت و مکث میان درخواستها جداگانه لازم است.
- تلاش دوباره فوری با IP تازه. فرستادن دوباره بدون مکث پس از
429یا503یعنی نادیده گرفتن کاهش سرعتی که سرور خواسته است.
راهنمای انتخاب
| نیاز | پیشنهاد |
|---|---|
| صفحههای عمومی پرشمار و مستقل از هم | چرخش بهازای هر درخواست، کشور ثابت |
| ورود، سبد خرید یا فرم چندمرحلهای | نشست ثابت، برای هر روند یک شناسه |
| فهرست بلندی که با صفحهبندی پیموده میشود | نشست ثابت؛ با پایان فهرست شناسه را عوض کنید |
| خودکارسازی مرورگر (Playwright، Selenium) | نشست ثابت، برای هر پروفایل مرورگر یک شناسه |
| حسابهای مستقلی که همزمان کار میکنند | برای هر حساب یک شناسه نشست جدا |
| فهرست مجاز IP، یک هویت بلندمدت | پروکسی استاتیک |
| چند آدرس ثابت در دست دارید | چرخش فهرست در کد |
سایت 429 برمیگرداند | چرخش نه: مکث و سرعت کمتر |
پرسشهای متداول
چرخش IP و پروکسی چرخشی یکی هستند؟
یکی فرایند است و دیگری محصول. چرخش IP کار عوض کردن آدرس خروجی است و میتوانید آن را با یک فهرست پروکسی در کد خودتان هم انجام دهید. پروکسی چرخشی (rotating proxy) سرویسی است که همین کار را در گیتوی به جای شما انجام میدهد.
پروکسی backconnect نوع جداگانهای از پروکسی است؟
نه. Backconnect نام یک معماری است: به یک نقطه اتصال وصل میشوید و گیتوی خروجی را از استخر پشت آن انتخاب میکند. سرویسهای پروکسی چرخشی مسکونی و موبایل با همین معماری کار میکنند. نوع IP (اتصال خانگی، موبایل، دیتاسنتر) را backconnect تعیین نمیکند و خاستگاه استخر تعیین میکند؛ تفاوت نوعها در نوشته تفاوت پروکسی ISP و پروکسی مسکونی آمده است.
چرا با روشن بودن چرخش IP در هر درخواست عوض نمیشود؟
به احتمال زیاد کلاینت شما همان اتصال را دوباره به کار میبرد. در HTTPS، IP خروجی هنگام برقرار شدن تونل CONNECT انتخاب میشود و تا باز بودن تونل عوض نمیشود. برای هر درخواست اتصال تازه باز کنید یا هدر Connection: close بفرستید. همچنین ببینید پارامتر نشست ثابت در نام کاربری شما باقی نمانده باشد.
نشست ثابت چه مدت دوام دارد؟
مدت را از پنل، بین 1 تا 60 دقیقه، انتخاب میکنید و با عوض کردن شناسه نشست هر لحظه که بخواهید میتوانید به IP تازه بروید. این مدت سقف است و تضمین نیست: اگر گره خروجی از شبکه جدا شود، گیتوی نشست را زودتر به آدرس دیگری میبرد. کد خود را چنان بنویسید که اگر IP وسط نشست عوض شد، روند را از آغاز شروع کند.
استفاده از چرخش رعایت محدودیت نرخ را بینیاز میکند؟
نه. چرخش بار هر آدرس را کم میکند، نه بار کل روی سرور مقصد را. سقف همزمانی برای هر سایت، مکث میان درخواستها و پیروی از هدر Retry-After همراه با چرخش هم لازم است.
برای چرخش چند IP لازم است؟
یک عدد درست وجود ندارد و محاسبه از سرعت درخواست برای هر آدرس آغاز میشود. در مدل گیتوی نیازی به این محاسبه ندارید، چون آدرس نمیخرید: در کل استخر میچرخید و صورتحساب بیشتر بر پایه ترافیک است. معیارهای انتخاب در نوشته هنگام خرید پروکسی به چه نکاتی باید توجه کرد؟ آمده است.
خلاصه
چرخش IP یعنی عوض شدن آدرس خروجی درون یک استخر و تصمیم آن با گیتوی است: با هر اتصال تازه، با پایان مدت یا با عوض شدن شناسه نشست. چون در HTTPS خروجی هنگام برقرار شدن تونل انتخاب میشود، چرخش «بهازای هر درخواست» در عمل بهازای هر اتصال است و کلاینتی که اتصال را دوباره به کار میبرد روی همان IP میماند. برای صفحههای مستقل چرخش بهازای هر درخواست، برای روندهای دارای وضعیت نشست ثابت و برای هویتهایی که نباید عوض شوند آدرس استاتیک را انتخاب کنید و کشور را همیشه آشکارا تعیین کنید. چرخش جای محدودیت سرعت را نمیگیرد؛ بار را پخش میکند و سرعت خزش محترمانه همچنان لازم است. نوعهای مناسب کارتان را میتوانید در خدمات پروکسی ما مقایسه کنید.




