?

Log in

answer_42
Recent Entries 
Унылые люди из различных проектов зачем-то пытаются закрыть от нас с вами свои данные. Один из любимых способ закрыться, но сохранить реноме, что мы, дескать, открытые - закрытие через API с ограничением количества запросов или просто защита сайта через определенное ограничение запросов. Что б не делать, только б не выкладывать нормальные православные дампы.

Возьмем к примеру такой сайт как РеформаЖКХ. Государство наладило сбор данных по ЖКХ на наши с вами налоги и даже нарисовало стандарт раскрытия. Данные ценные, пригодились бы в массе приложений. Пока все хорошо. Но потом начинается, сначала данные доступны только через веб-страницы, ладно, нужно грабить-скрэйпить, это криво, но терпимо. Дальше хуже, администрация решает, что скажем запрос в секунду, это много и ограничивает их количество через капчу. Старые скрипты перестают работать конечно же.

И всё это вместо того, чтобы выложить чёртовы дампы.

Ну достаточно лирики, теперь о том, как мы будем обходить капчи и все равно граббить.

Задача: скачать странички сайта защищенного капчей.
Решение: ротирующиеся прокси (основано на этом рецепте, с небольшими изменениями порта прокси и конфига, иначе не работает).

По шагам.

1. Ставим requesocks, stem для Python (pip install requesocks).

2. Ставим Tor Browser

3. Редактируем файл c:\tools\Tor Browser\Browser\TorBrowser\Data\Tor\torrc Делаем так, чтобы там присутствовала такая секция:
SocksPort 9150 IPv6Traffic PreferIPv6 KeepAliveIsolateSOCKSAuth
ControlPort 9151
HashedControlPassword 16:05834BCEDD478D1060F1D7E2CE98E9C13075E8D3061D702F63BCD674DE
CookieAuthentication 1

9151 это порт, который открывает Tor
HashedControlPassword это захэшированное слово password, пароль который мы дальше будем использовать в коде.

4. Запускаем Tor Browser, он просто будет висеть в памяти.

5. Теперь пишем код на питоне.

Сначала импорты, понадобятся пакеты requesocks, stem, не забываем их заранее установить:

import requesocks
from stem import Signal
from stem.control import Controller

Такой запрос пойдет через прокси сделанный тором и выдаст IP отличный от нашего настоящего:

session = requesocks.session()
session.proxies = {'http': 'socks5://127.0.0.1:9150',
'https': 'socks5://127.0.0.1:9150'}

print session.get("http://httpbin.org/ip").text


А так можно эти прокси менять по мере надобности:

from stem import Signal
from stem.control import Controller
with Controller.from_port(port = 9151) as controller:
controller.authenticate(password="password")
controller.signal(Signal.NEWNYM)

print session.get("http://httpbin.org/ip").text


В принципе это все что нам нужно, теперь мы можем просто делать так:

1. Отправить запрос
2. Проверить появилась ли в ответе капча.
2а. Если да, сменить прокси, перейти к 1.
2б. Если нет, распарсить.

Работает медленнее, чем напрямую, но работает автономно.
Почему-то установка pandas в Python 2.7 это какой-то гемор, не pip, ни easy_install не хотят ее устанавливать, последний на

easy_install pandas

ругается:

error: Setup script exited with error: Unable to find vcvarsall.bat

Для исправления ситуации интернетом рекомендуется установить Microsoft VC Express, но он хоть и бесплатный какой-то большой и мрачный, ну его нахрен. Поменяем компилятор на православный MinGW. Схема подчерпнута здесь.

Скачиваем и устанавливаем MinGW: http://sourceforge.net/projects/mingw/files/latest/download

Запускаем консоль и идем в папку MinGW\bin:

cmd
cd c:\MinGW\bin\

Говорим там:
mingw-get install gcc
mingw-get install mingw-utils

Создаем c:\Python27\Lib\distutils\distutils.cfg, пишем там такое:

[build]
compiler = mingw32

Добавляем в переменную PATH бинарники MinGW
PATH=%PATH%;c:\MinGW\bin

Находим файл: distutils\cygwinccompiler.py и отредактировать его, убрав все-mno-cygwin (почему)

Ставим собственно панду:

easy_install pandas

Проверяем:

python
import pandas
7th-Jan-2015 01:28 am - Fake it till you make it
Дискуссии на тему "во всём виноват Запад" часто оказываются аналогичными: "У меня в гараже живёт дракон". Это название притчи Карла Сагана, которая является главой из его книги The Demon-Haunted World. Искал её на русском одним куском, но так и не смог найти, поэтому перевёл сам. А Ане спасибо за корректуру.

Оригинал: http://www.godlessgeeks.com/LINKS/Dragon.htm

"В моём гараже живет огнедышащий дракон", Карл Саган.

Представьте, что я (применяя методы групповой терапии психолога Ричарда Франклина) с полной серьезностью делаю такое заявление. Конечно вы захотите это проверить, сами посмотреть на дракона. За предыдущие века накопилось бесчисленное количество историй про драконов, но никаких вещественных доказательств. Вот она - возможность!

Вы говорите: "Показывай", и я веду вас в свой гараж. Заглядываем внутрь: там лестница, пустые банки из-под краски, старый велосипед - но никакого дракона.

Вы: "А где дракон?"

Я: "О, он прямо здесь", и показываю куда-то в сторону. "Забыл сказать, дракон - невидимый".

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

Я говорю: "Классная идея, но дракон парит в воздухе".

Вы предлагаете использовать инфракрасный датчик, чтобы засечь невидимый огонь.

"Здорово, но невидимый огонь не выделяет тепла."

Вы предлагаете распылить краску на дракона, чтобы он проявился.

"Хорошая идея, но он бестелесный и краска не прилипнет." И так далее.

Каждый предлагаемый материальный эксперимент я парирую специальным объяснением, почему он не сработает.

В чем же разница между невидимым, бестелесным, парящим в воздухе драконом и несуществующим драконом? Если нет способа опровергнуть моё утверждение и нельзя придумать эксперимент, который бы дал необходимую информацию против, то что вообще означает утверждение, что мой дракон существует? Ваша неспособность опровергнуть мою гипотезу не является подтверждением ее истинности. Утверждения, которые не могут быть проверены, определения, которые невозможно опровергнуть, - бесполезны для постижения истины, как бы сильно они ни вдохновляли нас или возбуждали нашу тягу к чудесам. То, о чём я прошу, сводится просто к вере, без каких-либо доказательств, вере мне на слово. Единственное, что вы почерпнули из моих настойчивых утверждений про дракона в гараже, - это то, что у меня что-то не так с головой. Вы можете задуматься о том, что же убедило меня, если материальные эксперименты неприменимы. Неминуемо возникнут предположения, что это был сон или галлюцинация. Но почему тогда я воспринимаю их так серьезно? Может мне нужна помощь? Или, может быть, я серьезно недооценил человеческую способность ошибаться? Представьте, что хотя эксперименты ничего не подтверждают, вы всё равно захотите быть максимально открытым и просто отложите окончательное решение по этому вопросу. Да, текущие факты выступают против, но если появятся новые данные, то вы готовы их оценить и решить, насколько они убедительны. Конечно, с моей стороны было бы несправедливо оскорбляться тому, что вы не хотите мне верить, или критиковать вас за занудство и отсутствие воображения только за вынесение вердикта: "Не доказано".

Представьте, что все пошло иначе. Дракон действительно невидим, но оставляет следы на муке, инфракрасный датчик зашкаливает, распылитель краски обнаруживает плавающий перед вами в воздухе зубчатый гребень. Не важно, насколько вы скептически настроены по отношению к существованию драконов -- не говоря уже о невидимых -- вы должны признать, что что-то тут есть и предварительно можно сказать, что это согласуется с невидимым, огнедышащим драконом.

Теперь другой сценарий: предположим, что это не только я. Предположим, что несколько ваших знакомых, включая людей, про которых вам точно известно, что они не знают друг друга, начинают рассказывать про драконов в своих гаражах - и везде отсутствуют доказательства. Все мы признаем, что несколько ненормально верить в такую странную вещь, не подтвержденную физическими доказательствами. Мы не сумасшедшие. Мы думаем о том, что на самом деле бы означало для человечества существование драконов, прячущихся в гаражах по всему миру. Что касается меня, лучше бы это не было правдой. Но, может быть, все эти древние мифы Европы и Китая о драконах вовсе не мифы?

Наконец-то стали поступать свидетельства появления следов драконов на муке. Но почему-то они никогда не появляются в присутствие скептика. Альтернативное объяснение кажется очевидным. Более пристальное изучение следов показывает, что их могли подделать. Еще один любитель драконов показывает обожженый палец и заявляет о том, что стал жертвой редкого физического проявления огненного дыхания дракона. Но, снова, есть и другие объяснения. Мы понимаем, что есть и другие способы обжечь палец, кроме как попасть под дыхание невидимых драконов. Такие "доказательства" - не важно, насколько серьезными их считает любитель драконов, - далеки от убедительных. Опять же, единственный осмысленный подход заключается в предварительном опровержении гипотезы о драконе, оставаясь открытым к новым данным в будущем и задаваясь вопросом, в чем может быть причина того, что столько вроде бы здравомыслящих и трезвых людей разделяют одну и ту же странную иллюзию.
Всё прошло более менее гладко. Явка очень маленькая, около 20%. Одни пожилые люди, молодежи было примерно 3-4 человека, людей среднего возраста тоже, остальное за 50. Несколько бабушек сетовали, что их попросили придти проголосовать, пара человек узнавала номер УИК "чтобы отчитаться".

Комиссия была ок, но несколько напряжена и приходилось быть бесконечно вежливым и обходительным чтобы заставить делать все по порядку, не сортировать всем вместе, не считать параллельно.

В спешке таки проигнорировав мои предупредительные выстрелы в воздух возгласы понаписали таки чуши в увеличенную копию протокола, пришлось долго разбираться и найти примерно 5 ошибок, за что бы провозглашен "умницей", "надо было сразу его слушать", "он всегда со своей бумажкой ходит и все верно говорит" (это про дорожную карту, кстати рекомендую).

Наблюдателей было всего двое - пара кажется от коммунистов (ПСГ и наблюдатель), в конце торопились, забрали не до конца оформленную копию (она даже не была внесена в реестр), я дожал до конца, но в общем было незачем.

Официальные результаты:

http://www.moscow_city.vybory.izbirkom.ru/region/moscow_city?action=show&root=772003412&tvd=27720001543230&vrn=27720001539308&prver=0&pronetvd=null&region=77&sub_region=77&type=426&vibid=27720001543230

С нашим протоколом комиссии совпадают.



Аццкий ад конечно, как у нас выборы организованы, чтобы проголосовать досрочно по весьма уважительной причине (собственно я ПРГ на другом участке), надо пройти круги ада, чтобы выяснить где вообще можно голосовать досрочно.

В области проходят сразу пачки выборов, у нас выбираются депутаты в Совет депутатов сельского поселения и выборы главы района. С выборами в Совет еле-еле разобрался позвонив сначала в ИК Московской области (+7495606-6351), а потом в её же "отдел по организации выборов" (+74956060742). После выяснений оказалось, что голосовать нужно не на своем УИКе, а в Муниципальной избирательной комиссии располагающейся в администрации поселения.

С главой района сложнее. Звонил в свой УИК (школа), отвечает женщина не член комиссии, ничего по досрочному голосованию сказать не может, позвать никого из членов не может (якобы они все на уроках), заявление на голосование на дому соответственно тоже принять не может (хотя оно мне и не надо).

Одинцовский ТИК на официальный телефон (+7495599-0404) не отвечает. Координатор по району от Гражданина Наблюдателя где ТИК не знает и сомневается что он вообще существует. Координатор по Мособласти от Гражданина Наблюдателя тоже где ТИК не знает.

Так и не проголосовал, обидно.
Модифицированная инструкция отсюда, исправлены ссылки, расшифрованы некоторые моменты.

Получение прав root на Android 4.0 на Sony Xperia Active ST17i

Подготовка

На телефоне

  • Включить USB debugging в Menu>>Settings>>Developer options>>Development>>USB debugging

  • Включить Unknown sources в Menu>>Settings>>Security>>Unknown sources

  • Включить MNC вместо MTP в Menu>>Settings>>Application>>Unknown sources

На компьютере

  • выключить PC Companion

Процесс

1. Качаем fleshtool: http://uploaded.net/file/b5w61lia

Устанавливаем.

2. Качаем прошивку: http://www.mediafire.com/download/rid82rydw6jhhzn/ST17i_4.0.2.A.0.42_GenericRU.zip

Распаковываем прошивку в папку flashtool\firmwares.

3. Выключаем телефон. Зажимаем клавишу "уменьшить громкость" и подключаем выключенный телефон по usb.

4. Запускаем fleshtool

Нажимаем кнопку Flash, дальше flashmode, и ok.

Внимание! Все данные с телефона будут удалены. Кроме данных на флешке, если она есть.

Ждем завершения флеша, отключаем телефон от usb, включаем. Первая загрузка может быть долгой.

5. Делаем Root

Нажимаем кнопку Root.

6. Скачиваем Xperia-ROOT и прошивку 4.0

Распаковываем прошивку в flashtool\firmwares, Xperia-ROOT без разницы куда.

7. Подключаем телефон к компу

Из папки Xperia-ROOT запускаем 01-local-prop.cmd.

8. Прошиваем 4.0 через флештул

Обязательно убираем отметку Wipe user data. После прошивки и запуска, телефон один раз перезагрузится.

9. Подключаем телефон к компу

Из папки Xperia-ROOT запускаем 02-push-root-files.cmd. Телефон перезагрузится.
Нас окружаются базовые станции (БС) GSM. Как правило, наш телефон одновременно "виден" нескольким. Телефон постоянно переподключается, при движении меняется уровень силы сигнала  (измеряется в dBm, децибел-миливатты).

Задача: логировать длительное время сигнал информацию с базовых станций через короткий промежуток времени с пользовательскими засечками.

Идеальная программа должна уметь:

  • устанавливать высокой частоты обновления, скажем 1 сек

  • логирование LAC, CID, даты-времени, мощности сигнала

  • логировать сразу несколько станций (соседей и текущую)

  • логировать в файл в прозрачном формате (CSV), указывать путь до места куда сохранен лог

  • логировать пользовательские засечки

Нужно логировать:

  • LAC - Location Area Code

  • CID - Cell ID

  • MNC - Mobile Network Code

  • MCC - Mobile Country Code

  • RSSI - Received Signal Strength Indication

  • ASU - Arbitrary Strength Unit (тоже самое что и RSSI, но в других единицах: dBm = (2 × ASU) - 113 ASU)


Попробовал следующее ПО:ПрограммыCollapse )
Ubuntu 13.10 реально расстраивает огромным количеством каких-то дурацких глюков. Я честно говоря не понимаю, как с некоторыми из них система вообще может существовать. Вот краткий перечень на память:

1. Не работает клавиатурное переключение языков на логин-скрине, если у вас вдруг нет мыши и язык выставлен RU, то вы out of luck, переключить язык не удасться, пароль ввести тоже. Идиотизм.

2. В системе не работают шорткаты использующие латиницу если текущий язык - кириллица. Это вообще звиздец.

3. Если открыть один наутилус, а потом свернуть и нажать на его иконку на таск баре то .... откроется еще один наутилус, а не развернется старый. Капец.

4. Поверх всех индикаторов заряда батарей зачем-то показывается также индикатор заряда батареи мыши, который без поллитра не отключить.

5. Если у вас не дай бог два экрана, готовьтесь, выделение окна на втором экране при котором затеняется таск бар будет периодически приводить к тому, что раз-оттеняться он не будет, так и останется одна иконка подсвечена, а остальные зачерненные.

Ну и на закуску, эта сволочь не хотела обновляться до 14.04, все время безмолвно выпадая после нажатия кнопки Обновить вникуда. Запуск в консоли sudo update-manager -d пояснил, что:


Проверка наличия новой версии Ubuntu
Ваша версия Ubuntu больше не поддерживается.
Traceback (most recent call last):
File "/usr/bin/do-release-upgrade", line 92, in
"%(url)s\n") % { 'url' : url }
ValueError: unsupported format character '?' (0xa) at index 55


Помог такой рецепт:

в консоли
$ sudo sublime /usr/bin/do-release-update

найти 123 строку, удалить символ % перед (url)

перезапустить sudo update-manager -d

UPD: в 14.04 большая часть и вышеперечисленного исправлена, давно надо было обновиться.
Обыскался в рунете, но так ничего и не нашел, нигде нет ни единого свидетельства того, что за хостинг в Хетцнере вообще возможно заплатить от юридического лица, поэтому вот инструкция как это делается со всякими нюансами. Выяснение подробностей с Хетцнером, Банком, консультантами и бухгалтерией заняло порядка 2 месяцов и составило штук 30 писем (это конечно функция нашей грамотности). Разумеется в вашем банке может быть другой клиент и другие требования, поэтому для вас это может быть не существенно или вообще не сработать. У нас сработало.

Hetzner ужасно вреден и совершенно никак не хочет помогать, но допустим от его услуг вы отказываться не собираетесь.

Он:
- отказывается заключать договор (отказ прямым текстом, "договор не заключаем")
- отказывается прописывать в счете прямым текстом, что это оплата услуг хостинга (отказ прямым текстом, "счет не меняем")

Предполагается, что у вас уже в наличии:
- юр.лицо
- аккаунт в хетцнере
- валютный счет в евро

1. Переводим оплату на оплату по счету на юр.лицо

Предположительно ранее вы платили как физическое лицо (карточкой), поэтому просим Hetzner перевести наш хостинг на оплату по безналу, лучше сразу на год. Делается этот тут: https://robot.your-server.de/support простым письмом примерно такого содержания:

We've been using your services for about a year and were paying out of personal funds.
This year we'd like to purchase hosting for a year ahead and pay via wire.
Will it be possible to get an invoice?
Client number: K0203926622

Через некоторое время они отвечают, что мол вы переведены на оплату по безналу и счет выставлен. Ждем счета. Он генерируется автоматически.

2. Делаем Поручение на конвертацию валюты

Идем в интернет банк и заполняем "Распоряжение на конвертацию валюты", покупаем ровно ту сумму, которая указана в счете. Ждем пока оно выполнится. В результате на валютном счету появляется нужна сумма.

3. Платим налоги!

18% НДС

Расчитывается так, допустим месяц хостинга стоит 55,46 евро. Курс определяется так, идём на http://cbr.ru, если все документы отправляются до окончания банковского дня (до 15.00 в моём банке) берем текущий курс, если после - то завтрашний.

Например:
55,46 евро на курс 06.02.14(77,9356)=4322.31
4322.31*18/100=778.02

Округляем до целого в одну или другую сторону.

с 01.01.2014 по п. 6 ст. 52 НК РФ " Сумма налога исчисляется в полных рублях. Сумма налога менее 50 копеек отбрасывается,а сумма налога 50 копеек и более округляется до полного рубля".


Делаем платежку и проводим.

Назначение платежа:

Налог на добавленную стоимость на товары, услуги, ввозимые на территорию Российской Федерации. Без НДС

Почему нужно платить налог. Услуги приобретаются зарубежом, поэтому вы выступаете в качестве налогового агента. Согласно пп. 4 п. 1 ст. 148 налогового кодекса местом реализации услуг по сдаче в аренду движимого имущества, за исключением наземных автотранспортных средств, признается территория Российской Федерации, если покупатель таких услуг осуществляет деятельность на территории Российской Федерации. При этом местом осуществления  деятельности покупателя  услуг  считается территория Российской  Федерации  в  случае фактического   присутствия   покупателя   указанных   услуг   на   основе   государственной   регистрации организации.

Это касается только выделенного сервера (он же dedicated). Главная ссылка - Письмо министерства финансов РФ от 21 октября 2013 г. N 03-07-08/43942 (скачать).

Если вы приобретаете виртуальный сервер  (VDS) или хостинг файлов, то НДС платить не нужно. Главная ссылка это подтверждающая - Письмо министерства финансов от 25 апреля 2014 г. N 03-07-РЗ/19611 (скачать).

4. Делаем заявление на перевод

В назначении ссылаемся на номер счета, обязательно дату и упоминание что покупаем:

Payment for the Invoice R0003835627 date 15.04.2014, server hosting service from 11/04/2014 to 10/04/2015

Дополнительная информация, ссылаемся на номер платежки которой уплатили налоги и сумму:
НДС уплачен, ПП №108 от 19.05.2014, 5108.00

Важно! Сумма должна до копейки совпадать с той, которая была проведена платежкой НДС.

5. Заполняем справку о валютных операциях

- так как договора нет, то вместо него пишем номер счета
- даты должны быть текущими, такими же как, как в заявление
- код ВО: 21100 (Расчеты резидента в виде предварительной оплаты выполняемых нерезидентом работ, оказываемых услуг, передаваемых информации и результатов интеллектуальной деятельности, в том числе исключительных прав на них, включая выполнение указанных обязательств по договору комиссии (агентскому договору, договору поручения) (авансовый платеж), за исключением расчетов по коду 21400, расчетов, указанных в группе 23 настоящего Перечня, и расчетов, связанных с выплатой вознаграждения нерезиденту-брокеру по договору о брокерском обслуживании(группа 58 настоящего Перечня))
- ссылаемся на номер заявления на перевод (номер 4)

Выглядит так:



6. Пишем сопроводительное письмо в банк

Письмо важно, так как банку нужно объяснить, почему нет договора и счет такой кривой. Поэтому содержание примерно такое:

1. Договора не заключалось

2. Оплата за хостинг сервера, в инвойсе значится Product - EX4S, чему соответствует сервер конфигурации описанный на сайте организации у которой покупаются услуги:
http://wiki.hetzner.de/index.php/Root_Server_Hardware/ru (нужно выбрать пункт 2.4 EX серверы)
К сожалению, изменить инвойс они не могут технически.

3. НДС уплачен ПП №108 от 19.05.2014 (на данный момент статус ПП - Доставлена в банк)

4. Оплата разовая - за год обслуживания, период соответствует указанному в инвойсе 11/04/2014 - 10/04/2015


7. Самопроверка

Валютный контроль - страшные придиры, поэтому перед отправкой проверяем всё по чеклисту:

- НДС посчитан правильно, на правильную дату
- даты заявления, платежки НДС, справки - совпадают
- в справке стоит правильный номер заявления на перевод
- в заявлении в дополнительной информации указана правильная (до копейки) сумма НДС
- в сопровождающем письме приведены все необходимые объяснения
научился наконец красивые сочленения линейных объектов делать

до



после



Делается это через настройку уровней знака (Свойства слоя: Стиль\Порядок отрисовки), смысл в том, что обводка линии кладется на нижний слой, а сама линия на верхний (например обводке задается 0, а самой линии 1), можно также регулировать порядок отрисовки "самих линий".

This page was loaded Aug 30th 2016, 10:45 am GMT.