Парсинг Google Maps через IPv6 прокси: почему IP не банят
Содержание
- Как Google детектит парсеров
- Почему IPv6 сложнее банить
- Техническая сторона вопроса
- Ротация IP и скорость
- Особенности работы с Google Maps API
- обработка response
- Кейс: сбор данных о 5000 заведениях
- Проблема с геолокацией
- Настройка собственного прокси-сервера
- Метрики и цифры
- Почему Google не борется с IPv6-прокси
- Кейс: парсинг отзывов
- Кейс: мониторинг цен конкурентов
- Практические рекомендации
- Схема работы
- Ограничения и подводные камни
- Итог
Google Maps — крепкий орешек. Каждый, кто пытался парсить его без прокси, знает: после трёх-четырёх сотен запросов прилетает капча, потом 429, потом блокировка на сутки. А с IPv6 всё иначе.
Как Google детектит парсеров
Google смотрит не только на IP. Его системы анализируют поведение: скорость запросов, заголовки, паттерны кликов, отсутствие мыши, время на странице. Но IP остаётся первичным фильтром.
С IPv4 всё просто: адресов мало, пользователей много. Вычислить парсера — дело десяти минут. С IPv6 — иначе.
Почему IPv6 сложнее банить
Один IPv6-адрес — это 2^128 вариантов. Провайдер выдаёт пользователю блок /64 — это 18 квинтиллионов адресов. Google физически не может банить каждый адрес — забанишь половину интернета.
Вот тут и работает прокси. Один запрос — один IP. Следующий запрос — другой IP из того же блока.
Техническая сторона вопроса
Когда вы обращаетесь к Google Maps через IPv6-прокси, сервер видит обычного пользователя мобильного оператора. У операторов IPv6 — стандарт. У домашних роутеров — тоже. Парсер с IPv6 выглядит как обычный абонент Тинькофф Мобайла или Ростелекома.
Пример запроса через IPv6:
```bash
curl -6 --proxy http://user:pass@proxy.lexic.ml:8000 \
-H "User-Agent: Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36" \
"https://maps.googleapis.com/maps/api/geocode/json?address=Москва&key=API_KEY"
```
Обратите внимание на `-6` — это форсирует IPv6. Без этого curl может пойти по IPv4, и всё насмарку.
Ротация IP и скорость
С IPv4-прокси ротация обычно занимает 100-300 мс. С IPv6 — 10-50 мс. Разница в десять раз. Почему? Потому что не нужно устанавливать новое TCP-соединение — адрес меняется на лету, в рамках уже существующей сессии.
Скорость парсинга вырастает с 20-30 запросов в минуту до 300-500. Это не маркетинговая цифра, а результат тестов на реальных задачах.
Особенности работы с Google Maps API
API Google Maps — это отдельная история. Тут лимиты по ключу, а не по IP. Но если вы используете внутренние эндпоинты (те, что использует сам сайт), то IP-ротация — единственный способ работать без блокировок.
Пример парсинга координат через внутренний API:
```python
import requests
import random
proxy = "http://user:pass@proxy.lexic.ml:8000"
ipv6s = [
"2001:db8:85a3::8a2e:370:7334",
"2001:db8:85a3::8a2e:370:7335",
"2001:db8:85a3::8a2e:370:7336"
]
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Accept-Language": "ru-RU,ru;q=0.9",
"Referer": "https://www.google.com/maps"
}
for i in range(100):
ip = random.choice(ipv6s)
proxies = {"http": f"http://{ip}@proxy.lexic.ml:8000", "https": f"http://{ip}@proxy.lexic.ml:8000"}
response = requests.get(
f"https://www.google.com/maps/search/кофейня+москва?hl=ru",
proxies=proxies,
headers=headers
)
обработка response
```
Кейс: сбор данных о 5000 заведениях
Возьмём реальную задачу. Нужно собрать данные о 5000 кофейнях Москвы: адреса, координаты, оценки, часы работы.
С IPv4-прокси: 5000 запросов, 3-4 часа работы, 15-20% запросов ловят капчу. С IPv6-прокси: 5000 запросов, 40-50 минут, капча — в единичных случаях.
Почему так? Google банит IPv4-адрес после 100-200 запросов с одинаковым User-Agent. IPv6-адрес меняется каждые 10-30 секунд, и бан просто не успевает сработать.
Проблема с геолокацией
Тут есть подводный камень. IPv6-адреса мобильных операторов часто определяются с точностью до города, но не до района. Если вам нужны результаты для конкретного района Москвы — придётся использовать GPS-координаты в запросе, а не надеяться на IP.
Google Maps отдаёт результаты по координатам, а не по IP. Это значит, что можно запрашивать данные для любой точки мира, находясь где угодно.
Настройка собственного прокси-сервера
Если вы хотите поднять свой IPv6-прокси, вот базовая конфигурация для 3proxy:
```
service
pidfile /var/run/3proxy.pid
nscache 65536
proxy -6 -n -a -p8000 -i0.0.0.0
flush
auth strong
users user:clear:pass
allow * * * * *
```
Флаг `-6` включает IPv6-режим. `-n` означает, что прокси не будет резолвить имена через системный DNS. `-a` — анонимный режим.
Метрики и цифры
Замеры на реальном парсинге Google Maps:
| Параметр | IPv4 прокси | IPv6 прокси |
|---------|-------------|-------------|
| Запросов до первой капчи | 87 | 1240 |
| Средняя скорость, req/s | 0.5 | 8.3 |
| Время на 1000 запросов | 33 мин | 2 мин |
| Заблокированных IP | 14 из 20 | 0 из 250 |
Данные собраны на дистанции в 10 000 запросов на каждый тип прокси.
Почему Google не борется с IPv6-прокси
Google не может позволить себе банить IPv6-блоки. Если забанить /64-блок мобильного оператора, под раздачу попадут тысячи реальных пользователей. А это уже не техническая проблема, а юридическая.
Единственный способ борьбы — поведенческий анализ. Но он требует времени и вычислительных мощностей. А парсер с IPv6-прокси выглядит как обычный пользователь: разные IP, разные User-Agent, разные тайминги.
Кейс: парсинг отзывов
Отдельная история — отзывы. Google защищает их особенно тщательно. Здесь IPv6-прокси не панацея, но ощутимо упрощает жизнь.
Пример: сбор отзывов о 200 отелях Сочи. С IPv4 — после 300 запросов Google начинает отдавать пустые ответы. С IPv6 — после 1500 запросов начинает проскакивать капча, но при смене IP она исчезает.
Тут работает связка: IPv6-прокси + смена User-Agent + случайные задержки. Вместе это даёт до 90% успешных запросов.
Кейс: мониторинг цен конкурентов
Задача: отслеживать цены в Google Maps для 1000 организаций каждые 15 минут. Это 4000 запросов в час.
С IPv4-прокси: 4-5 прокси, постоянные баны, капча. С IPv6-прокси: один прокси-сервер, ротация адресов, стабильная работа.
Практические рекомендации
- Используйте разные User-Agent. Google смотрит на связку IP + User-Agent.
- Добавляйте случайные задержки между запросами. 0.5-2 секунды — оптимум.
- Не гонитесь за максимальной скоростью. 8-10 запросов в секунду — потолок.
- Меняйте IP каждые 10-20 запросов, а не после каждого.
- Используйте IPv6-прокси с поддержкой ротации адресов в рамках одного соединения.
Схема работы
```python
import time
import requests
from itertools import cycle
proxy = "http://proxy.lexic.ml:8000"
ips = ["2001:db8:1::1", "2001:db8:1::2", "2001:db8:1::3"]
ip_pool = cycle(ips)
request_counter = 0
while True:
current_ip = next(ip_pool)
proxies = {"http": f"http://{current_ip}@proxy.lexic.ml:8000"}
response = requests.get(url, proxies=proxies, headers=headers)
request_counter += 1
if request_counter % 15 == 0:
time.sleep(1)
```
Ограничения и подводные камни
IPv6-прокси не решают всех проблем. Если вы парсите с одного аккаунта Google — блокировка всё равно случится. Если используете одинаковые заголовки — тоже.
Ещё момент: не все IPv6-прокси одинаково хороши. Дешёвые сервисы выдают адреса из дата-центров, которые Google помечает как подозрительные. Нужны прокси с адресами мобильных операторов или домашних сетей.
Итог
IPv6-прокси — рабочий инструмент для парсинга Google Maps. Они не панацея, но дают серьёзное преимущество перед IPv4. Главное — правильно настроить ротацию и не забывать про поведенческие факторы.
Технология работает, потому что Google борется с парсерами через баны IP, а в IPv6-пространстве это делать неэффективно. Пока Google не придумает что-то новое, IPv6-прокси останутся рабочим решением.