Google سختترین هدف اصلی برای اسکرپکردن است و دلیلش ساده است: بیش از هر کسی ترافیک میبیند، پس غنیترین مدل را از اینکه یک جستجوگر واقعی چه شکلی است دارد. از یک IP دیتاسنتر با هر حجمی به آن بزنید و ظرف چند درخواست ۴۲۹، صفحهی «sorry/index» یا بلاک نرم میگیرید که نتایج بیصدا کم میشوند. این راهنما پوشش میدهد چه چیزی واقعاً بلاکهای Google را راه میاندازد و چه استراتژی پروکسی و نرخمحدودسازی یک اسکرپر SERP را در ۲۰۲۶ زنده نگه میدارد.
Google به یک سیگنال تکیه نمیکند — چندتا را روی هم میگذارد و وقتی امتیاز ترکیبی از خط رد شود بن میکند:
برای بیشتر هدفها روی دادهی عمومی میتوان با IP دیتاسنتر سر کرد. Google استثناست: امتیازدهی اعتبار ASN آن آنقدر تهاجمی است که پروکسی دیتاسنتر تقریباً فوری throttle میشود. خروجیهای مسکونی — ASNهای واقعی مصرفکننده — همان چیزی است که به اسکرپر SERP اجازهی دوام حجم میدهد. دیتاسنتر را برای بقیهی کارها نگه دارید و بودجهی مسکونی را جایی خرج کنید که واقعاً اثر دارد.
چرخش بار را پخش میکند تا هیچ IP شبیه بات نباشد، اما انضباطی که زندهتان نگه میدارد نرخ بهازای هر خروجی است، نه اندازهی استخر. هزار پروکسی هم اگر همه را تمامگاز شلیک کنید بن میشوند. به هر خروجی مثل یک انسان ریتم بدهید:
import time, random, itertools
from curl_cffi import requests # browser TLS fingerprint, see notes below
PROXIES = [
"socks5h://USERNAME:[email protected]:913",
"socks5h://USERNAME:[email protected]:913",
]
pool = itertools.cycle(PROXIES)
def serp(query, page=0):
proxy = next(pool)
params = {"q": query, "start": page * 10, "hl": "en"}
r = requests.get("https://www.google.com/search", params=params,
impersonate="chrome",
proxies={"http": proxy, "https": proxy}, timeout=30)
if r.status_code == 429 or "/sorry/" in r.url:
raise RuntimeError("rate-limited - back off and rotate")
return r.text
for q in queries:
html = serp(q)
parse(html)
time.sleep(random.uniform(2.0, 5.0)) # human-paced gap between queries
تأخیر تصادفی کار واقعی میکند: یک sleep(3) ثابت خودش یک اثرانگشت است. متغیرش کنید و کوئریها را روی خروجیها پخش کنید تا هرکدام زیر آستانهی بهازای IP گوگل بماند.
نتایج محلیشده (رتبهبندی، زبان، ارز) به موقعیت خروجی بستگی دارند، پس پروکسی را در جغرافیای موردنظر انتخاب کنید و برای یک کوئری چندصفحهای یک نشست چسبنده نگه دارید تا همهی صفحات یک جستجو از یک جا بیایند. مخلوطکردن خروجیها وسط کوئری، نتایجی دوخته از محلیهای مختلف میدهد — برای ردیابی رتبه بیفایده.
Google handshake TLS شما را هم میخواند. یک فراخوان سادهی requests یک JA3 میفرستد که فریاد میزند پایتون، و این به امتیاز IP اضافه میشود. با curl_cffi (بالا) یا مرورگر واقعی اثرانگشت مرورگر بفرستید — دور زدن فینگرپرینتینگ TLS با curl_cffi را ببینید. اگر Google با دیوار رضایت JS گیت کرد، به موتور مرورگر واقعی ارتقا دهید، مثل راهنمای Turnstile — همان منطق «به JS runtime نیاز است».
/sorry/ — زدن به آن خروجی را متوقف کنید، بچرخانید و نمایی عقب بکشید. کوبیدن یک IP علامتخورده بن را طولانیتر میکند./sorry/ محکم عقب بکشید، نه اینکه در بنِ طولانیتر دوباره تلاش کنید.کاربران جدید با ثبتنام 500MB هدیه میگیرند، بهعلاوه بونوس اولین شارژ. پیشنهاد محدود.