Как я получаю халяву с авито в 2026 году
История вопроса
Получением халявы сначала с юлы, потом с авито я начал интересоваться лет 5 назад. Поначалу я застал времена, когда даже номер телефона я реально вытаскивал с авито, потом это уже стало невозможно. Но если это сталоневозможно мне, то стало невозможно и моим конкурентам. Так что не все так старшно. За эти годы я получил много всякого, чтобы вы не думали, что бесплатно отдают всякую хрень (а ее конечно тоже отдают). Например:
"фурнитуру" от убитых ботинок - грязные шнурки и крючки для их продевания
втулки от туалетной бумаги
картон, обрезки тряпок
приведу несколько наиболее интересных отдач:
2 бытовки с самовывозом
2 токарных станка (1И611П и настольный самодельный)
лазерный станок (поле 40 на 40 см, лазер 50 Вт) с чиллером (это холодильник на 5 КВт для охлаждения лазера)
стройматериалы (фанера и осб (десятки листов), железо, строительные леса)
фуговальный станок с циркуляркой диаметром 40 см - страшная штука
газовые баллоны разные
кондиционеры и отдельно внешние блоки от них
печь-камин на дровах "Бавария 3 стекла"
кассеты от банкоматов, где хранится наличка. Из них получаются отличные системы хранения инструментов, деталей и всяких мелочей
промышленные холодильники со стеклянной дверью, морозильные камеры
компьютеры вплоть до iMac 24"
Но постепенно задача поиска нужных мне объявлений в интересных категориях усложнялась. Т.к. авито целенаправленно усложняет алгоритмы запросов к их сайту. Заставляет переходить на платные услуги.
Можно платить и просто иметь api для доступа даже не к сайту, а к их базе, откуда гораздо проще делать запросы и обрабатывать результаты.
Препоны авито
Сначала все было просто. Я имитировал post и get запросы которые делал браузер при поиске объявлений. Отлавливал куки, ключи всякие чтобы авито принимало меня и мои запросы как родные ;-) Но постепенно эта лавочка закрылась. Стал получать ответы, типа каптчу решите, или ваш IP заблокирован, в общем может один запрос из 10 проходил.
Я начал искать новые пути, установил питон и там использовал хромиум который маскируясь под реальный браузер получал содержимое страницы со списком интересующих меня объявлений. Но и этот метод вскоре перестал работать надежно. Почитав инеты, я узнал что есть всякие "невидимые" хромиумы, которые наиболее полно прикидываются реальным браузером и авито не ругается на запрос через них, но и это решение не давало нормального результата, хотя если просто запустить браузер, то все было нормально - авито выдавало список объявлений на мой запрос. Т.е. вывод напрашивался один - хочешь иметь доступ к списку объявлений - пользуйся обычным браузером.
Поиск работающего решения
Так я и решил поступить. Задача была следующая: написать программу, которая:
запускала нужный мне браузер
открывала в нем нужную ссылку (типа найти на авито бесплатную бытовую технику)
дождаться пока страница загрузится
сохранить страницу в файл
дождаться пока страница полностью сохранится
закрыть браузер
Первые 2 пункта решаются легко. Я делаю так: создал ini файл, в котором, в числе прочего, прописан путь к браузеру.
-----------------------------------------------------------------------
[settings]
;Application = "C:\Program Files\Mozilla Firefox\firefox.exe"
Application = "C:\Program Files\Google\Chrome\Application\chrome.exe"
-----------------------------------------------------------------------
Для запуска программы использую командную строку, аргументом передаю ссылку.
-----------------------------------------------------------------------
wcscpy(strLink, argv[1]);
GetPrivateProfileString(L"settings", L"Application", L"", strApp, 320, pbuf);
wcscat(strApp, L" ");
wcscat(strApp, strLink);
// Запускаем процесс
CreateProcessW(NULL, strApp, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
-----------------------------------------------------------------------
Первое что делает программа (я назвал ее sendkey) это создает строку запуска браузера из пути к браузеру и открываемой ссылки. В итоге я вижу браузер с результатом моего запроса. Осталось самое главное - программно сохранить эту страницу в файл. К сожалению ни у хрома, ни у мозиллы нет никаких аргументов запуска чтобы они там что-то сами сохранили, хотя это было бы конечно офигенно удобно. Ну что ж, придется выкручиваться самому. Я знаю, что если нажать сочетание клавиш "ctrl+S" то появляется окно сохранения открытой страницы.
-----------------------------------------------------------------------
// имитировать нажатие клавиш CTRL+S
PrintDebugInfo("Begin press CTRL+S!");
keybd_event(VK_CONTROL, 0, 0, 0);
Sleep(100);
keybd_event(83, 0, 0, 0);
Sleep(100);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
Sleep(100);
PrintDebugInfo("End press CTRL+S!");
Sleep(iWaitSecAfterCtrlS * 1000);
-----------------------------------------------------------------------
Далее вводим имя файла и жмем кнопку "Сохранить". Но это все надо сделать программно! В этом-то и есть вся загвоздка. Я начал с того, что запустил программу "spy++" это из поставки visual c++ такая утилита, которя ловит сообщения разных окон когда что-то в этих окнах происходит, например, мы тыкаем или водим мышью или нажимаем всякие кнопки. Так я и подглядел что там происходит на уровне сообщений windows когда я просто руками сохраняю страницу. Осталось эту последовательность симитировать из моей программы. Сразу скажу, это было очень непросто. Если просто так захотеть послать все сообщения, возникат куча вопросов:
кому посылать? надо сначала программно найти сначала оконо браузера, потом окно диалога сохранения, потом кнопку "Сохранить"
задержки это просто беда, браузеры штуки не очень быстрые. То быстро страница грузится, то медленно, то вообще не грузится
в браузерах постоянно выскакивают всякие левые окна. То предложат что-то, то скажут что закрыли аварийно и давайте восстановим ранее открытые страницы?
в разных браузерах много чего отличается, например заголовок окна сохранения страницы. Это тоже надо учитывать.
файл который я сохраняю (точнее старую версию) сначала надо удалить, иначе опять лишние вопросы типа "файл существует, что делать будем?"
обязательно надо выбирать тип сохраняемого файла. Мне же картники и всякие сценарии из него не нужны, надо выбрать "только html"
Повторяю - все это делать программно. Т.е. от запуска браузера до его закрытия происходит туча операций. Есть еще одна очень неприятная хрень. Предположим, в окне сохранения я хочу задать (программно конечно) имя файла. Я нашел именно этот EDIT CONTROL и посылаю ему соответствующее сообщение (WM_SETTEXT) и да, все круто! Мое имя файла встает куда надо. Потом программно нажимаю кнопку "сохранить" и тут страшный облом - хотя имя файла на экране мое, но браузер сохраняет файл со старыми именем! Т.е. если я руками имя ввожу, все ОК, а если программно меняю, где-то там внутри в потрохах хрома да и мозиллы тоже остается старое имя. Я с этим убился просто бороться, но в итоге победил. А чего стоило установка типа файла. Полдня промучился. Дело в том, что если задать нужный формат и успешно сохранить, то выбор типа файла запоминается. Но иногда бывает слетает. И хром начинает тормозить, сохраняя десятки мегабайт всякой хрени, естественно дальнейшая работа встает. Но и эту проблему я решил. Теперь программа запускается так:
getpage.bat "www.avito.ru/sankt_peterburg_i_lo/garazhi_i_mashinome..."
где getpage.bat это вспомогательный файл он прибивает возможно зависшие экземпляры браузеров, удаляет старые версии сохраненных страниц, еще хотел в него еще добавить переключение вывода на дополнительный монитор, потом передумал. На выходе имеем html файл со списком объявлений, дальше с ним разбирается моя программа на 1С. Она разбивает файл на отдельные объявления, для кажого определяет ID, название, текст, цену, местоположение и прочее. Потом, по результатм делает рассылку в телеграмм. Проверяя на то что в объявлении нет слов из черного списка, попадает в интервал цен и ранее не было отослано.
Как сейчас работает мой парсер
Как показала практика, мой метод парсинга нормально работает неделями подряд и не вызывает появления капчи. Но меня не устраивала общая скорость работы. У меня же не один запрос. Их около десятка:
бытовая техника
комплектующие для компьютера
просто компьютеры
телефоны
для дома и дачи
ремонт и строительство
оборудование для бизнеса
инструменты
аудио/видео техника
и т.д. Если все эти запросы крутить на одном компе, то частота каждого сильно уменьшается. Может это будет раз в 10...15 минут. Очень медленно, часто за секунды что-то ценное уходит, а тут 10 минут! Надо было что-то придумать. Я понимал что неплохо бы создать целую кучу компов и распределить запросы между ними. Но эта куча должна же где-то стоять, шуметь, жрать электроэнергию, да еще следить надо за всем этим. В итоге, я собрал себе сервер и решил создать на нем кучу виртуальных машин. Я купил корпус огромный десктопный супермикро причем с лицензионной наклейкой, т.е. лицензию получил практически даром. В корпус поставил материнку тоже супермикро двухпроцессорную на сокетах 2011. Не люблю всякие хунаны и прочую галимую китайчатину. Всего у меня 24 ядра (48 потоков), 128 гигов оперативки модулями по 32 гига, SAS диски на аппаратном raid контроллере. 2 диска SAS твердотельных и два SAS обычных для хранения виртуальных машин. В общем, работает такой сервер очень неплохо, шумит только и греет воздух, поэтому собираюсь перевезти его на дачу, там делаю себе волокно и фиксированный IP адрес. Бесперебойник есть APC на 2.2 Квт, места полно. Пусть гараж отапливает в процессе работы.
Теперь об организации парсинга. Сначала я решил сделать одну образцовую виртуальную машину (далее ВМ) и потом ее тиражировать. На каждой ВМ ставил sendkey, 1C и конфу. На каждой ВМ настроенную на определенный запрос. Но быстро понял что так никакой скорости не напасешься, 1С работала не очень быстро. Просто запуск длился до 30 секунд, я хотел чтобы все было намного быстрее. Тогда мне пришла в голову такая мысль: а что если база 1С будет одна, а в ней разные пользователи. Каждому будет соответствовать свой запрос. База будет крутиться на SQL сервере на самом главном сервере, а на виртуалках будут тонкие клиенты. И еще браузеры. Т.е. софта всего - ничего. Виртуалки запускаются автоматически при запуске главного сервера, в них через автозагрузку запускается моя конфигурация 1С, и она уже начинает крутить свой запрос. И так все виртуальные машины. Сначала погонял одну ВМ, потом две, сегодня 4 штуки. Стали вылезать кое-какие проблемы. Типа места на диске перестало хватать, но я все лишнее потер, 20 гигов дискового пространства хватает. Для нормальной работы воткнул в сервер usb шный ключ защиты от 1с (купил его на юноне :-))) как дохлую флешку за недорого), поставил драйвера, зато теперь у меня лицензионная 1С! На эту тему еще вспомнилось. Как-то раз в Шушарах отдавали целую гору компьютерного барахла, поехал с прицепом. Барахла было столько что в прицеп не влезло, частично загрузил машину, но все вывез: системные блоки, МФУ, бесперебойники, клавы, мыши, какие-то на первый взгляд непонятные штуки. Потом в гараже, при разборе, я нашел в одном компе тоже ключ защиты. Как оказалось это страшно дорогая хрень - ключ для программы автоматизации автозаправочной станции (управление топливными колонками, расчеты, учет прихода/расхода топлива и т.д.). Такая прога стоит реально сотни тысяч. Я смог продать ключ за 12000.
Паралельно я занимаюсь реализацией полученного даром. Особенно мне нравится продавать газовые плиты. Они круты тем что:
не очень тяжелые, я один на телеге спокойно спускаю газовую плиту с 5 этажа без лифта
занимают не очень много места (на крайняк, складирую их в 2 этажа если у нижней железная крышка)
легко чинятся. В основном все проблемы это: прочистить форсунки, прочистить расворителем или бензином краны и кнопки электроподжига
иногда что-то отваливается типа крышки, все чистится и клеится силиконовым герметиком
не нужна вода (и положительная температура!) для демонстрации работы
потенциальному покупателю могу показать плиту в работе (все конфорки и духовку). Вам даже в магазине никто и никогда плиту не включит и не покажет
если мне везет, то вместе с плитой отдают ее паспорт - это увеличивает стоимость плиты примерно в 2 раза!
на прицепе могу перевезти за раз 6 плит + 2 в машине, если сложить заднее сиденье
если плита совсем в паршивом состоянии, то разбираю ее на запчасти: конфорки, форсунки, ручки, кнопки, провода, свечи электроподжига и т.д. Оставшееся железо идет на сдачу.
плиты нужны почти всем. Если ее нормально отмыть, легко продается за несколько дней.
Выхлоп (окупаемость идеи)
За несколько лет такого бизнеса (продажа техники и прочего полученного бесплатно) и выручка от клиентов которым я делаю рассылки по их запросам, есть выгодные приобретения. Вначале я купил гараж в пригороде СПб всего за 65000 руб.
Сам гараж деревянный, но обшит железными листами. Ворота были в убитом состоянии, провисли, низы гнилые, но каким-то чудом я бесплатно получил гаражные железные ворота. Очень тяжелые, еле смог увезти на прицепе. В них была калитка, замки, изнутри пеноплекс и вагонка. Также в комплекте были боковые части коробки с петлями. За 15000 руб я нанял каких-то мастеров и мне эти ворота приделали к гаражу. И они даже по размеру подошли!!! Старые ворота отдал мастерам. В гараже провел косметический ремонт, перекрасил ворота, подлатал крышу. Сам забетонировал подъезд. Гараж сразу же сдал в аренду. Не помню точно, но вроде первому арендатору за 5500 в мес, потом ко мне заехал новый и стал платить больше и сразу за год вперед. С первой же оплаты гараж окупился. В общем каждые полгода я теперь покупаю по гаражу с доходов от моего бизнеса, и сразу же сдаю в аренду. Новые гаражи начинают помогать окупать ранее приобретенные.
Казалось бы хорошая идея поставить сервер в гараж, но там на ночь отрубают электричество, а бывает и днем, если в гараже есть счетчик, то цена квт*ч побольше чем в городе, так что идея не очень.
Сейчас мне и гаражи новые программа помогает искать. До этого упустил пару очень вкусных предложений, локти кусал. Теперь я вижу каждый попадающий в мои параметры гараж не позже чем через 2...3 минуты после появления объявления на авито. Как только вижу что это мне подходит, моментально созваниваюсь. А ведь так и машины и недвижимость можно искать.















































