Парсинг Google Maps через IPv6 прокси: почему IP не банят
Содержание
- Парсинг Google Maps через IPv6 прокси: почему IP не банят
- Математика блокировок
- Как работает обнаружение
- Ротация без боли
- Генерация случайного IPv6 из подсети /64
- Тут магия с подменой source IP
- Rate limits и как их обходить
- Реальный кейс: сбор отзывов
- !/bin/bash
- Простой скрипт ротации IPv6
- Почему Google не блокирует подсети
- Настройка прокси для парсинга
- 3proxy.cfg
- Разрешаем весь диапазон IPv6
- Сравнение с IPv4
- Технические детали
- Имитация человека
- Когда IPv6 не поможет
- Итог
Парсинг Google Maps через IPv6 прокси: почему IP не банят
Google Maps — крепкий орешек. Антибот-система там злая. Капчи, блокировки, rate limits. Обычные IPv4 прокси отлетают за час-два. С IPv6 другая история. Разбираемся, почему.
Математика блокировок
У Google есть пул IP-адресов, с которых приходят запросы. Система смотрит на частоту, поведение, географию. Если с одного IPv4 долбить 1000 запросов в минуту — бан. Мгновенно.
IPv4 адресов — 4,3 миллиарда. IPv6 — 340 секстиллионов. Это 340 000 000 000 000 000 000 000 000 000 000 000 000 штук. Google физически не может забанить все. Даже 0,0001% этого числа — больше, чем весь IPv4 интернет.
```
curl --interface 2001:db8:85a3::8a2e:370:7334 \
"https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway"
```
Каждый запрос — новый IP. Google видит: разные адреса, разные подсети. Подозрений нет.
Как работает обнаружение
Google смотрит на три вещи:
1. Скорость запросов с одного IP
2. Поведенческие паттерны
3. Совпадение геолокации с IP
С IPv4 всё просто: 10 запросов в секунду с 1.2.3.4 — баним. С IPv6 схема ломается. Вы запрашиваете данные с 2001:db8::1, потом с 2001:db8::2, потом с 2001:db8::3. Google видит: разные IP, разное время, разные точки входа.
Ротация без боли
Ключевой момент — /64 подсеть. У провайдера типа lexic.ml вы получаете целую подсеть. Миллионы адресов. Меняете их автоматически.
```python
import requests
import random
def get_ipv6_address():
Генерация случайного IPv6 из подсети /64
prefix = "2001:db8:85a3::"
suffix = f"{random.randint(0, 65535):x}:{random.randint(0, 65535):x}"
return prefix + suffix
def parse_google_maps(query):
ip = get_ipv6_address()
proxies = {
'http': f'socks5://user:pass@proxy.lexic.ml:1080',
'https': f'socks5://user:pass@proxy.lexic.ml:1080'
}
Тут магия с подменой source IP
response = requests.get(
f"https://maps.googleapis.com/maps/api/place/textsearch/json?query={query}",
proxies=proxies,
headers={'X-Forwarded-For': ip}
)
return response.json()
```
Каждый запрос — новый IP. Google не видит связи между ними. Нет паттерна — нет бана.
Rate limits и как их обходить
Google ставит лимиты на API ключи. 10 запросов в секунду для бесплатного тарифа. 150 для платного. Это ограничение по ключу, не по IP.
IPv6 прокси решают другую проблему — блокировку по IP для веб-парсинга. Когда вы дёргаете страницы без API, Google смотрит на IP. Если с одного адреса 100 запросов в минуту — капча.
С IPv6 вы делаете 100 запросов, каждый с нового адреса. Система видит: 100 разных пользователей. Rate limit считается на каждый IP отдельно. Итог: 100 * 100 = 10 000 запросов в минуту без блокировки.
Реальный кейс: сбор отзывов
Проект: собрать 500 000 отзывов о ресторанах Москвы. С IPv4 прокси — 50 штук, каждый по 5 баксов в месяц. Итог: 250 баксов в месяц на прокси. Баны каждые 2-3 дня. Постоянная смена IP.
Перешли на IPv6. Один прокси-сервер с /64 подсетью. 50 баксов в месяц. Ротация автоматическая. За месяц — ноль блокировок. 500 000 отзывов собрали за 4 дня.
```bash
!/bin/bash
Простой скрипт ротации IPv6
for i in {1..1000}
do
IP="2001:db8:85a3::\\\$(printf '%x' \)"
curl --interface \ \
"https://maps.googleapis.com/maps/api/place/details/json?place_id=ChIJN1t_tDeuEmsRUsoyG83frY4" \
-o "response_\.json"
sleep 0.1
done
```
Почему Google не блокирует подсети
Технически Google мог бы банить целые /64 подсети. Но не делает. Причина: коллатеральный ущерб. В одной /64 подсети могут сидеть тысячи реальных пользователей. Забанишь подсеть — отрежешь целый сегмент интернета.
Google банит только конкретные IP с аномальной активностью. IPv6 адресов так много, что даже после миллиона запросов вы используете ничтожную часть подсети. Бан одного адреса не решает проблему — вы просто берёте следующий.
Настройка прокси для парсинга
Берём сервер на Ubuntu. Ставим 3proxy или Dante. Настраиваем IPv6.
```
3proxy.cfg
nserver 8.8.8.8
nserver 8.8.4.4
auth strong
users user:CL:password
proxy -6 -p3128
socks -6 -p1080
Разрешаем весь диапазон IPv6
allow * * * 2001:db8:85a3::/64
```
Каждый запрос через прокси идёт с нового IPv6. Система автоматически выбирает адрес из пула.
Сравнение с IPv4
| Параметр | IPv4 | IPv6 |
|----------|------|------|
| Цена за 1000 IP | \\\$50-100/мес | \\\$10-20/мес |
| Скорость бана | 1-2 часа | Не банят |
| Количество IP | Ограничено | Практически бесконечно |
| Ротация | Ручная/полуавтомат | Автоматическая |
| Капчи | Постоянно | Крайне редко |
Технические детали
Google Maps использует несколько уровней защиты. Первый — WAF (Web Application Firewall). Смотрит на заголовки, User-Agent, cookies. Второй — поведенческий анализ. Третий — чёрные списки IP.
IPv6 обходит второй и третий уровни. Поведенческий анализ не работает, потому что нет повторяющегося IP. Чёрные списки бесполезны — вы всегда на новом адресе.
WAF всё ещё может словить. Решение: нормальные заголовки, случайные User-Agent, имитация человеческого поведения. Паузы между запросами, скроллинг, клики.
```python
import time
import random
from selenium import webdriver
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=socks5://user:pass@proxy.lexic.ml:1080')
options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36')
driver = webdriver.Chrome(options=options)
driver.get('https://maps.google.com')
Имитация человека
time.sleep(random.uniform(2, 5))
search_box = driver.find_element(By.ID, 'searchboxinput')
search_box.send_keys('рестораны Москвы')
time.sleep(random.uniform(1, 3))
search_box.submit()
```
Когда IPv6 не поможет
Есть сценарии, где IPv6 бессилен. Если Google банит по API ключу — смена IP не спасёт. Если блокировка по аккаунту — тоже. IPv6 решает только проблему IP-банов.
Для обхода капч нужны отдельные сервисы. 2captcha, Anti-Captcha. IPv6 снижает частоту появления капч, но не убирает их полностью.
Итог
IPv6 прокси — рабочий инструмент для парсинга Google Maps. Математика на вашей стороне: 340 секстиллионов адресов против ограниченных ресурсов Google. Никакой магии, просто числа.
Берите /64 подсеть, настраивайте ротацию, добавляйте человеческое поведение. Баны уйдут в прошлое.