Python

индекс
250,37

Граббинг Google Maps и других сервисов

Кролик
Захотелось мне недавно повесить на стену постер со спутниковым снимком. Выбрав локацию на Google Maps (аэропорт Сиднея) и формат постера (A1, 841 × 1189 мм, 9932 x 7023 @ 300 dpi), начал искать граббер. Попробовал несколько вариантов, но у всех была одна проблема — они запрашивали изображения напрямую, поэтому через несколько десятков запросов Google банил мой IP (первый раз на 15 минут, потом на несколько дней).

Так как граббер сам по себе очень простой, а проблема бана граббинга свойственна не только Google Maps, решил написать небольшой скрипт, решающий эту проблему.

Итак, задачу удалось решить следующим образом (ОС Ubuntu):

Устанавливаем и настраиваем связку TOR+Privoxy (инструкция). TOR — сеть анонимных прокси, пропускающая ваш трафик через несколько серверов, расположенных в разных странах. Нам анонимность не нужна, зато возможность менять IP будет полезной. А Privoxy — обычный прокси-сервер, который будет перенаправлять наши HTTP-запросы на SOCKS-порт локально сервера TOR.

В конфигурации TOR (/etc/tor/torrc) убираем комментарий перед 55-ой строкой «ControlPort 9051» и перезапускаем сервер, чтобы иметь возможность рулить TOR'ом по телнету. По умолчанию TOR выбирает новый IP только при запуске.

Работоспособность этой системы можно проверить прописав в браузере HTTP-прокси localhost:8118 (работает довольно медленно). А также подключившись по телнету к localhost:9051 (должен открыться сеанс).

Google Maps выдает изображения блоками 256х256 пикселей, нам нужно запросить их и сложить в один файл. Номера изображений и номер масштаба можно посмотреть firebug'ом в разделе Net. Там будут вот такие ссылки:

khm1.google.com/kh/v=50&x=482397&y=314745&z=19&s=Galileo

Граббер запрашивает последовательно нужные изображения, а когда текущий IP попадает в бан, подключается к TOR и запрашивает смену прокси.

Перед запуском скрипта необходимо выполнить команду:

export http_proxy=http://127.0.0.1:8118/

Собственно код граббера, написанный на Python:

# -*- coding: utf-8 -*-
 
import urllib
import time
import os
import telnetlib
from PIL import Image
 
# Параметры
x = 482289
y = 314715
w = 3 
h = 3
z = 19
v = 43
filename = 'result.jpg'
 
# Константы
iw = 256 
ih = 256
 
# Создаем изображение нужного размера.
im = Image.new('RGB'(* iw, h * ih))
 
# Скачиваем каждый блок и помещаем на общее изображение. 
for i in range(w):
    for j in range(h):
        attempts = 0
        while attempts < 30:
            attempts += 1            
            print str(i) + ', ' + str(j) + ' (' + str(attempts) + ')' + \
                ' http://khm0.google.com/kh/v=' + str(v) + '&x=' + str(i + x) + \
                '&y=' + str(j + y) + '&z=' + str(z)
            try:
                # Запрашиваем картинку с Google.Maps и сохраняем во временный файл.
                google = urllib.urlopen('http://khm0.google.com/kh/v=' + str(v) + '&x=' + \
                    str(i + x) + '&y=' + str(j + y) + '&z=' + str(z))
                tmp_file = open('tmp.jpg''wb')
                tmp_file.write(google.read())
                tmp_file.close()
                tmp = Image.open('tmp.jpg')
            except Exception:                
                # Если не получилось скачать больше 3 раз,
                # подключаемся по телнету к локальному серверу TOR
                # и запрашиваем прокси с другим IP.
                if attempts > 3:
                    tn = telnetlib.Telnet('127.0.0.1'9051)
                    tn.read_until("Escape character is '^]'."2)
                    tn.write("AUTHENTICATE\r\n")
                    tn.read_until("250 OK"2)
                    tn.write("signal NEWNYM\r\n")
                    tn.read_until("250 OK"2)   
                    tn.write("quit\r\n")                                     
                    tn.close()
                # Ждем 3 секунды
                time.sleep(3)
            else:            
                im.paste(tmp, (* iw, j * ih))                           
                # Сохраняем результат в конце каждой полосы.
                if j == h - 1:
                    im.save(filename, 'JPEG')
                break
 
# Удаляем временный файл.
os.remove('tmp.jpg')

Работает он медленно, но верно :) Заменив часть кода, связанную с Google Maps, можно использовать код для граббинга любого другого сервиса, ограничивающего количество запросов. В мирных целях конечно же.

А вот и результат:

Постер

Если что, вот скачанный файл (15360 х 11008 пикс., 37 МБ).

UPD: Основная цель была — обойти ограничение, а не слить снимок…
+81
9 декабря 2009, 17:00
122

комментарии (137)

–9
spyfzm #
Согласно лицензионному соглашению, вы нарушаете авторские права. Ясно что все их нарушают, но обычно об этом не делают пост на хабре и не публикуют исходники =)
+9
P_r_i_m_a_t #
Я же для личного использования, а не на продажу.
–8
spyfzm #
Прямо говоря нам с вами можно на эти фотоизображения только смотреть, сохранять, соединять слайды в единое целое и печатать нельзя.
«Запрещается копирование, вскрытие технологии, декомпиляция, дизассемблирование, перевод, изменение и создание производных продуктов на основе изображений или их частей.»
«При использовании Карт Google вы не получаете никаких прав на изображения.»

Я не придираюсь, гугл никогда еще не придирался к таким мелочам, но по факту — запрещают гугл и картографические фирмы такие штуки делать. Поэтому и банят за граббинг.
+9
P_r_i_m_a_t #
Написать-то они могут что угодно, но есть ещё российские законы, по которым, насколько я знаю, для личных целей распечатывать изображения можно.
–5
spyfzm #
Только если кучу изоображений 256*256 (ну или сколько там размер слайда...). Производный продукт (принт, склеенное изображение) делать запрещено.
Просто хотел обратить внимание, на пример того, что в век копирастии очень простые, логичные и привычные дела и вещи делать незаконно.
–8
spyfzm #
Даже если так, склеить их вместе нельзя — это производный продукт.
Просто хотел обратить внимание на пример того, что в век копирастии очень простые, удобные и привычные вещи незаконны.
0
spyfzm #
Хабр сделал вид что скушал предыдущий комментарий.
+6
P_r_i_m_a_t #
Статья 18. Воспроизведение произведения в личных целях без согласия автора и без выплаты авторского вознаграждения

1. Допускается без согласия автора и без выплаты авторского вознаграждения воспроизведение правомерно обнародованного произведения исключительно в личных целях, за исключением случаев, предусмотренных статьей 26 настоящего Закона.
2. Положение пункта 1 настоящей статьи не применяется в отношении:
воспроизведения произведений архитектуры в форме зданий и аналогичных сооружений;
воспроизведения баз данных или существенных частей из них;
воспроизведения программ для ЭВМ, за исключением случаев, предусмотренных статьей 25 настоящего Закона;
репродуцирования книг (полностью) и нотных текстов.

Для личных целей с изображением, опубликованным в открытых источниках, можно делать что угодно.
–9
spyfzm #
Есть некоторая разница между воспроизведением и созданием производных.
+7
P_r_i_m_a_t #
Создание в личных целях производных тоже разрешено — можно например коллажи и карикатуры делать. Считайте, что это коллаж.
+2
spyfzm #
Действительно, похоже на правду.
+1
Cancel #
Коллаж в пародийных целях :)
+1
vasfed #
Если подойти к вопросу формально — то никаких производных тут нет, просто куча фрагментов напечатано в исходном виде на одном листе бумаги, между ними (в случае струйной печати) даже есть несколько микрон зазора ;)
–4
spyfzm #
* Можно смотреть, а сохранять и так далее — нельзя.
+18
Dimchansky #
А я им запрещаю это мне запрещать. :)
0
michurin #
Но гугловые водяные знаки остаются же на карте?
+1
P_r_i_m_a_t #
Там есть параметр запроса (v), который регулирует прозрачность водяных знаков. До нуля его не везде можно ставить (закономерность я так и не нашел), но в результате сейчас на распечатанном снимке водяных знаков различить нельзя. Скачайте исходник, посмотрите.
+1
Shuisky #
v — это параметр версии тайлов, к водяным знакам отношения никакого не имеет)
0
P_r_i_m_a_t #
Хех, вот оно что :) Хотя у меня почему-т они не менялись совсем при разных значениях. А водяные знаки как раз в разных версиях разной прозрачности были.
0
Shuisky #
не меняются потому что версия увеличивается при любом обновлении снимков, не обязательно что для каждого отдельного тайла будет обновлено изображение.
0
P_r_i_m_a_t #
Я понял. Добавил v в параметры на всякий случай.
0
neelts #
без водяных знаков можно сохранять в google earth
+3
mistako #
Простите за оффтоп, но:
Коллега, как называется ваш стол?? И где вы его приобретали??
+1
P_r_i_m_a_t #
www.ikea.com/ru/ru/catalog/products/S59847780
Черная накладка, ножки, подвеска для системника продаются отдельно там же.
+1
kosiakk #
Там ещё угловые столы есть — шикарнейшая вещь! использую и очень радуюсь простору
0
ekzo #
вот так этот стол выглядит с высоты прыжка лягушки:

img710.imageshack.us/img710/5706/78807086.jpg
+10
Barzometr #
прикольная работа :)

но, для тех кто не сумеет это сделать, советую пользоваться SasPlanet sasgis.ru/sasplaneta/. Там вдобавок есть выбор спутников. И можно также распечатать карту марса, луны и звездного неба над головой :).

Для начала прогрузите нужную вам местность, в нужном масштабе. Я обычно юзаю 19ый.
После «прогулки» по карте, уменьшаем размер до 15-16, чтоб видеть всю область, жмем ALT+R, выделяем нужный участок.
Выбираем «Склеить», выбираем масштаб 19 (на котором мы смотрели). Выбираем качество сжатия.
И жмем НАЧАТЬ.
Получается картинку :) можно нести на печать.

Для чего нужна «прогулка» по карте, внужном масштабе. Когда вы скливаете, он не скачивает картинки из инета, а берет из кэша, и если ее нет, то он берет более низкого масштаба (18), если и ее нет то далее. В итоге картинка получиться местами размыта.
Поэтому сначала «гуляем» по нужному участку, в нужном масштабе, а затем склейка :).

Это относиться к версии 90810. В новых, может исправили этот косяк.

+3
Slone #
Для того что бы не гулять сначала нужно выделить -> загрузить. А потом уже выбрать предыдущее выделение -> склеить
0
Barzometr #
во… спасибо :)
узнал что-то новое, день прошел не зря.
+2
Slone #
а + поставить =)
шутка, не надо минусовать :)
+1
Shuisky #
Хех, уже знатоки SAS.Планеты имеются) Приятно)
ЗЫ +
0
P_r_i_m_a_t #
А как он работает на больших изображениях? В плане бана по IP.
0
Slone #
нормально работает.
пока проблем не возникало.
0
TuKTeeK #
Ну как бы я яндексовую карту по всему миру до 12х вытягивал и 13х наполовину. Москву всю с подмосковными ушами до 18х вытягивал (максимум)

Так же гугловые карты качал для разных городов, Помню тайланд кажется весь стянул в приличном размере.

32гб карт награблено. 8) Пара миллионов файлов.

Насчет гугла там только одна проблема — тайты до безобразия медленно вытягивает чтобы не попасть в бан. Там 1-2 в секунду где-то. Яндекс раз в 20 быстрее. Яховксие карты где-то посередине по скорости вытягивания. Но некоторые вещи можно только у гугла глянуть.

А еще полезная фишечка сабжа — бектора с викимапии. Там можно такое найти, о чем так просто точку не нагуглишь. Тот же вход в пещеры. =)
+4
P_r_i_m_a_t #
Вы там весь интернет бэкабите что ли? :)
+2
Agent_Smith #
Та он задание получил, к 2012 году заграбить карту всего мира, что бы потом загрузить в ковчег, и показывать будущему поколению что наша Земля уже не торт.
0
TuKTeeK #
Ну в каждой шутке есть доля шутки. А если по каким-то причинам интернет работать не будет? Например запрет законодательный на карты введут и будут на стороне провайдера запросы резать. Или площадка московская упадет? Даже если не брать критические ситуации у меня всего один интернет канал, который не всегда стабильно работает. А так что-то не экзотическое я могу и со своего кеша посмотреть. Тем более гигабайты карт я считаю полезнее чем гигабайты музыки, фильмов и прочей тяжелой фигни которую мы обычно коллекционируем.

Ну и еще. То что у меня на винте идет вряд ли куда-то денется, в отличии от сторонних сервисов.
0
rocket #
Только что меня забанили на гугле после суток выкачивания ~481 мегабайт.
Качает и правда раз в 20 медленней, чем в том же яндексе.
0
Azya #
Там есть в параметрах карты настройка паузы между загрузкой тайлов, поставьте 0 и будет приличная скорость, токо забанют быстрее)
0
akral #
В районе attempts += 1 у вас дебажный print остался.
0
akral #
И начальное значение attempts потерялось.

Или это — «защита» от script-kiddies?
0
P_r_i_m_a_t #
Спасибо, что сказали. Это тупой хабравский парсер жрет код в некоторых тегах font. Не первый раз уже.
0
P_r_i_m_a_t #
Это индикатор загрузки такой :) И если что-то не качается, можно вручную скопировать ссылку и проверить.
0
spyfzm #
Кстати, почему именно аэропорт Сиднея? Чем он так мил Вам?
0
P_r_i_m_a_t #
Хотел любой крупный аэропорт (люблю такие сложные сооружения), а сиднейский оказался самый нормальный по цветам.
0
nolled #
Чем бан выразился? Потом всюду на гугловские проекты не пускало?
0
P_r_i_m_a_t #
Да, выдает страницу на все к maps.google.com: «От вас пришло много запросов, поэтому доступ временно закрыт».
0
zencd #
Но ведь при обычном google maps-сёрфинге запросов случается и гораздо больше чем при просмотре небольшого вобщем-то аэропорта. И не банят. В чём разница, интересно?
0
P_r_i_m_a_t #
На максимальном зуме он не такой уж и маленький (15360 х 11008, 37 МБ). Возможно, по скорости запросов смотрит. Пробовал с keepalive качать, последовательность менять — тоже банит, но чуть позже.
0
zencd #
Немаленький, но бывает и больше. В большинстве случаев, если я хочу порыскать там (а не пройти по ссылке) я, полагаю, трачу трафика больше чем 37 мб.

Может простой таймаут поможет? О нём не было упомянуто.
0
P_r_i_m_a_t #
Таймауты делал, не помогло. Может быть надо разные масштабы запрашивать периодически. Наверняка они как-то анализируют «человечность».
0
Cancel #
Не поможет, нужно полноценно эмулировать браузер, то есть тыкаться не только в картинки, но также и в скрипты. Аккуратно проставлять referer и так далее. Но самый надёжный метод — это, конечно, цепляться к google earth. Но там дурной протокол.
0
lol2Fast4U #
с keepalive не достаточно. надо еще паузы небольшие между группами запросов, последовательность должна быть такая же, как у юзера.
и user-agent надо реальный. максимально имитировать браузер ;)
кстати! можно поставить огромное разрешение монитора + прокрутку и тупо сделать скриншот (:
0
P_r_i_m_a_t #
Таймауты делал, не помогло. Может быть надо разные масштабы запрашивать периодически. Наверняка они как-то анализируют «человечность».
0
pxx #
Возможно еще имеет значение referer.
0
pro #
скачивать карту заданного квадрата на n уровней умеет tangogps, правда без проксей.
0
slatvick #
Можете сделать закрытый сервис на Google App Engine? Так сказать для избранных :)
На счет прав: волноваться не стоит. Попросят, закроете.
0
P_r_i_m_a_t #
Мне лень :) Да и в GAE ограничения на трафик.
0
slatvick #
трафика нам бы хватило ;)
а вот лень это да!
0
oleg_podsadny #
Будет ли гугл банить себя если запускать из энвайрмента Google App Engine? Я начал делать скрин-скрейпер на базе ГАЕ, но до дебага еще не дошел
+3
P_r_i_m_a_t #
Гугл забанит сам себя и сломается.
+1
MaximKat #
будет
я делал на гугл аппс сервис для копирования дней рождения из контактов в календарь, если сделать маленький интервал обновлений, получался бан в календаре
0
Mort #
Как вы распечатали этот плакат? По частям A4 дома или как-то специально?
0
P_r_i_m_a_t #
В типографии.
0
Cancel #
А во сколько обошлось?
0
P_r_i_m_a_t #
1500, но можно и за 1000 напечатать. Ещё от качества бумаги зависит.
–1
PSHKGRZN #
Ого!
У нас на меловке на сольвентном плоттере с тру чернилами около $8/м². Что-то у вас дороговато вышло (Симферополь).
0
P_r_i_m_a_t #
Я знаю, что можно дешевле, просто лень было куда-то ехать — а тут в соседнем доме контора. Бумага, кстати, глянцевая и очень толстая.
+4
AndrejP #
Я тоже скачал фотку своего города и окрестных территорий на всякий пожарный. А то война начнется, тогда фиг чего с интернета скачаешь.
+1
qmax #
глупая шутка, конечно, но тебе всё-таки удалось оказаться забаненым на гугле! :)

интересно, а поисковик можно также зафлудить, чтоб и там забанили, для эпичности?
0
7vies #
Ну конечно же у поисковика есть ограничение на количество запросов в единицу времени, и забанит если превысить.
Иначе бы его уже все давно себе скачали.
0
TuKTeeK #
А смысл? Информация устаревает там быстро. На некоторые сервера гугль-бот ходит раз по несколько в день.
0
P_r_i_m_a_t #
Да, на всех серверах Гугла такое ограничение.
0
maxcom #
он просто будет captcha показывать
0
P_r_i_m_a_t #
Это смотря с какой интенсивностью долбить :)
0
qmax #
О! на луркморе уже есть скриншоты забаненности на гугле…
–1
muslimov #
респект, очень полезная тема.
0
PASSTor #
А как на счёт Google Static Maps?
+1
P_r_i_m_a_t #
«Images may be retrieved in sizes up to 640 by 640 pixels.»
0
lol2Fast4U #
Получил апи-ключ, попробовал.
FAIL. Там нету спутниковых снимков, только обычные карты.
0
PASSTor #
Map Types можно уставонить в значение satellite
0
Azya #
Пример ссылки по которой можно вытаскивать тайлики с Google Static Maps (только надо будет обрезать снизу копирайты)
maps.google.com/staticmap?format=jpg&&size=256x286&markers=&maptype=satellite&sensor=false&key=ABQIAAAAdJiRiADnK-GI9M4bLOPapRQ5f0mQceVH5x3KW0LJn4_WigiuyBTypJ_jeMYNvgF7VSf0FLtSnZIgqw¢er=55.75184939,37.61718750&zoom=15

По этой ссылке кстать гугл не банит, но ограничения есть — если загружать быстро, то после каждых 80-100 тайлов гугл перестает возвращать на пару минут снимки, потом снова дает скачать 80 и тд.
–2
slav0nic #
спасибо
код ужасный
0
rapida #
А вот я хочу скачать карту своего города максимально подробную, подскажите что делать?
0
P_r_i_m_a_t #
Выполнить всё, что в топике описано. На Google Maps открыть картув левом верхнем углу города на нужном масштабе и в firebug посмотреть параметры запроса, подставить их в скрипт и запустить.
0
rapida #
а можно это в виде приложения как-то получить?
0
P_r_i_m_a_t #
Там выше дали ссылку на виндовую прогу — попробуйте её.
0
rapida #
какая именно? не нашел подходящей
0
PASSTor #
Воспользоваться OSM данными :)

В векторном формате например.
НЛО прилетело и опубликовало эту надпись здесь
+1
Lecactus #
а есть еще вот такая программа — satmap.narod.ru/ — пользовался несколько раз — работает безупречно, только одно неудобство — чтобы сначала найти область, которую нужно склеить — нужно открыть гугл.землю или гугл.мапс на сайте и посмотреть координаты какой нибудь точки в зоне нужной, а далее уже легко точно выбрать область и в самой программе.
0
Chikey #
Рабочее место понравилось. Удобно, не жалуетесь? Такое же хочу)
0
P_r_i_m_a_t #
Очень удобно :)
+1
CriggerMarg #


сделал себе карту =) спасибо

0
Mixail #
Да ёлы палы. Картинка конечно красивая, но зачем же так? Как никак весит полметра.
0
CriggerMarg #
лоханулся, сорри.
0
hellt #
очешуеть…
0
vam #
Эх, а я для проекта клеил карту вручную принтскрином) Зато водяных знаков нету, так как внахлест.
0
Azya #
Что то не пойму, если проблема бана была решена с помощью tor'а, что мешало использовать готовые проги для граббинга снимков через тот же tor?
0
P_r_i_m_a_t #
TOR не меняет прокси, пока его не попросишь через telnet.
0
Azya #
Странно, я почему то думал что меняет, вроде рандомом выбирает периодически. Хотя я не углублялся в понимание его работы а просто поставил сборку vidalia и спокойно качал без бана)
0
P_r_i_m_a_t #
Может и меняет, но не так часто, как нужно.
0
Quadrix #
Есть еще замечательная программа MapBuilder. С гугла, яндекса снимки(карты) берет. Из тех, что пробовал оставил только эту программу. Оф. сайт похоже закрыли.
0
mrgall #
Я занимался подобным в 2006 году, тогда было немного другое кодирование картинок (например qqrtttrst) и не было бана за скачивания — я тогда почти весь Киев скачал в во всех масштабах :)
Нужно будет вспомнить молодость и скачать себе большую карту окрестностей.
0
Dimchansky #
Я на основе gaia на C# написал код для скачки изображений с серверов Google Earth (там нет водяных знаков), но не доходят руки выложить.
0
Cancel #
Давно? Я тоже когда-то писал, но у меня оно через раз работало.
0
Dimchansky #
В апреле 2009. Я хотел DeepZoom прикрутить от SilverLight, но все не нахожу времени.
0
Dimchansky #
Тока что запустил тестовый клиент — все работает, в протоколе ничего не поменяли.
0
Cancel #
А какая версия библиотеки gaia? После закрытия гуглом она развивалась вообще?
0
Dimchansky #
Я просто взял ту версию, в которой еще был код для доступа к GE и портировал его целиком на C#. В последних версиях код для скачки карт с GE был убран.
0
Cancel #
Вообще странно, а у меня он не работает. Причём в нативном виде не работает.
0
Dimchansky #
В нативном виде я не пробовал даже, сразу портировал код и смотрел под отладчиком, что где происходит и соответственно допиливал.
+1
smind #
Так легко и непринужденно баним всю сеть ТОР-а на гугле на пару дней :)
ну одному наверное это сделать проблематично, а вот коллективно наверное реально :) только пока не придумал зачем…
0
P_r_i_m_a_t #
Не на пару дней, а на 15 минут. Как только первый бан получен, меняется IP. Да и банит он только на серверах с картами.
0
peterdemin #
print u'%d,%d(%d) khm0.google.com/kh/v=%d&x=%d&y=%d&z=%d' %\
(i, j, attempts, v, i+x, j+y, z)
0
P_r_i_m_a_t #
Я знаю, что так правильнее, но мне при отладке неудобно, когда переменные отдельно.
0
peterdemin #
Ловил PIL «IOError: cannot identify image file»
пока не стал открывать файл в бинарном режиме
tmp_file = open('tmp.jpg', 'wb')
0
P_r_i_m_a_t #
Странно. А ось какая?
0
peterdemin #
Windows XP SP3. Только что опять начал ловить :)
Python 2.6
0
peterdemin #
Все, понял в чем дело. Это я излишне «улучшил» код.
0
P_r_i_m_a_t #
В никсах просто один режим i/o. Поправил код для совместимости.
0
peterdemin #
А можно поподробнее про «export http_proxy=http://127.0.0.1:8118/»
Что делать с этим под виндой?
0
P_r_i_m_a_t #
Попробуйте в командной строке:

set HTTP_proxy=http://127.0.0.1:8118
0
peterdemin #
Попробовал, сначала вылетела ошибка Privoxy, потом магическим образом все заработало…
Я раньше не работал с проксями, пытаюсь вот разобраться. Если не затруднит, ответьте на следующие вопросы:
1) Как python поймет, что нужно подключаться через прокси на 127.0.0.1:8118? Неужели urllib завязан на переменные окружения?
2) Polipo, что идет в связке с Tor, насколько я понял, также является проксей, то есть аналогом Privoxy. Что же из них использовать?
0
P_r_i_m_a_t #
Неужели urllib завязан на переменные окружения?

Да.
Polipo, что идет в связке с Tor, насколько я понял, также является проксей, то есть аналогом Privoxy. Что же из них использовать?

Без разницы.
0
peterdemin #
Нагуглил
# Use www.someproxy.com:3128 for http proxying
proxies = {'http': 'http://www.someproxy.com:3128'}
filehandle = urllib.urlopen(some_url, proxies=proxies)

Так круче, имхо.
0
cry_san #
satmap.narod.ru/
Элегантное решение Вашей задачи.
0
P_r_i_m_a_t #
Задача состояла в первую очередь в обходе ограничений.
0
cry_san #
Там это тоже решено. Почитайте на сайте программы.
0
P_r_i_m_a_t #
Вы не поняли, задача состояла в обходе ограничений любых сервисов, блокирующих многократные запросы. Прочитайте заголовок страницы.
0
yoihj #
url2bmp — программа изготовления скринов, ставите размер на 10000 x 10000 (или сколько там надо) и без всяких банов получаете jpeg.
0
ibnteo #
А что там за заяц на первой картинке? Дайте координаты, пожалуйста.
+1
Azya #
44.244277° 7.769469°
А вот он зимой:
0
ibnteo #
В градусах будет так: 44°14'39.45" СШ, 7°46'10.98" ВД
ссылка на maps.google.com
0
x40c #
Поразительно.
Люди используют Тор, так как не могут позволить себе купить прокси забывая (либо вообще не принимая в рассчёт) о том, для чего, собсно, этот Тор был создан.
0
P_r_i_m_a_t #
А интернет был создан для обеспечения связи между американскими военными объектами в случае войны, а вы тут камменты через него пишите…

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.