Таргетинг по стране и городу
Таргетинг это суффикс логина. Страна работает надёжно, город зависит от того, какие устройства онлайн в эту минуту.
Синтаксис
Коды стран это ISO 3166-1 alpha-2 заглавными буквами. В названиях городов вместо пробелов дефисы, регистр обычный.
Суффиксы складываются в фиксированном порядке: страна, потом город, потом сессия, потом время жизни. Город без страны недопустим.
Страна и город
login_c_DE Germany
login_c_DE_city_Berlin Berlin
login_c_US_city_New-York New York
login_c_ES_city_Madrid_s_4_ttl_15mПокрытие
Резидентка покрывает 220+ стран. Таргетинг по городу работает в крупных рынках, и среди городов, через которые клиенты работают сегодня, есть Нью-Йорк, Бруклин, Лос-Анджелес, Сан-Франциско, Майами, Сиэтл, Филадельфия, Шарлотт, Лондон, Париж, Мадрид, Берлин, Дортмунд, Цюрих, Дубай и Сингапур.
Статические продукты уже, потому что запас физический: 41 страна у датацентрового IPv4, 24 у ISP, 17 у IPv6 и 26 у мобильных с выбором оператора внутри каждой.
Когда локация ничего не возвращает
Ответ 400 с сообщением о неизвестной стране или городе означает, что пул по этой локации сейчас пуст, а не что локация не поддерживается. Наличие ходит вместе с устройствами онлайн.
Правильная реакция это спуститься до уровня страны, отметить, что вы так сделали, и повторить город позже. Крутить один и тот же запрос в цикле значит тратить трафик и ничего не менять.
Откат на практике
try:
r = fetch(url, proxy=proxy(country="US", city="New-York"))
except GeoUnavailable:
r = fetch(url, proxy=proxy(country="US"))
mark_sample_as_country_level()Как сделать географию правдоподобной
Адрес это один сигнал локации и редко единственный, который читает сайт. Языковые заголовки, часовой пояс и история аккаунта тоже участвуют, а противоречие между ними заметнее, чем любое отдельно неверное значение.
Для скрапинга обычно достаточно совпадающего Accept-Language. Для всего, что работает в профиле браузера, часовой пояс и локаль профиля тоже должны сходиться со страной прокси.
Сигналы, которые должны совпадать
Proxy login_c_ES
Header Accept-Language: es-ES,es;q=0.9
Locale es-ES
Timezone Europe/Madrid
# A Spanish address asking for pages in English returns a blend
# that represents neither market.