Халява с юлы и авито. Часть 2

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Новая версия программы на управляемых формах

что такое управляемые формы

Поскольку запросы клиентов периодически меняются, я разработал версию программы, которая имеет web интерфейс. 1С очень хорошо подходит для этого, когда работает в режиме управляемого приложения. Базу можно открыть даже через браузер. И даже с мобильного устройства. При этом вы увидите стандартный интерфейс 1с, диалог ввода имени пользователя и после регистрации вы как будто попадаете в открытую стандартными средствами базу. Все те же меню, справочники, документы и т.п.

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

Управление подписками с мобильного телефона
Управление подписками с мобильного телефона
Запуск программы на мобильном телефоне
Запуск программы на мобильном телефоне

А web интерфейс позволяет пользователям работать в системе самостоятельно. Регистрироваться, добавлять и удалять запросы. В дальнейшем планирую и функцию оплаты туда подвязать. Также в планах вставить интерактивную карту с маршрутом проезда до интересной отдачи.

регистрация нового пользователя

При запуске такого Web клиента, можно войти под именем пользователя "регистрация нового пользователя". В этом интерфейсе можно задать себе имя пользователя и пароль. И все, больше ничего не сделать. При этом программа следит за уникальностью имен пользователей. Для примера, такой web доступ организован по адресу http://avsrv2.sytes.net:81/getyula83/ru_RU/
вы можете самостоятельно попробовать зайти и протестировать. Проверена работа с браузерами Хром и Мозилла. Таже возможна работа со смартфона и планшета.

Окно регистрации нового пользователя
Окно регистрации нового пользователя

пользователь сам настраивает свои поиски

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

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

  • свой мобильный телефон

  • E-Mail

  • параметры телеграм бота для оповещения (chat id и access token)

  • выбрать способ оповещения (почта или телеграмм)

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

Также программа показывает ваш остаток средств. Каждому новому пользователю при регистрации начисляется пробная сумма 5 руб.

Управление подписками с компьютера
Управление подписками с компьютера

Далее можно создавать себе поиски.
Для этого существует табличная часть в основной карточке клиента. Добавляя туда записи, вы содаете новые подписки. Для каждой подписки можно задать:

  • наименование (например "авито Тверь быт.техника = 0")

  • ссылка (ссылка вида "www.avito.ru/sankt-peterburg/remont_i_stroitelstvo?f=ASgCAgECAUXGmgwReyJmcm9tIjowLCJ0byI6MX0&q=о

%D1%82%D0%B4%D0%B0%D0%BC&s=104" или "youla.ru/all/hobbi-razvlecheniya/kollekcionirovanie?attributes[price][from]=0&attributes[price]

[to]=0&attributes[sort_field]=date_published&q=календарики")

  • услуга (т.е. частота запросов каждая с соотв. стоимостью)

  • признак активности подписки

  • сайт с которого подписка берет объявления (выбирается из списка)

  • диапазон цен для поиска объявлений (например от 0 до 500 руб.)

Пользователь может сам управлять своими подписками, редактировать их. Но поля, относящиеся к стоимости работы программы можно менять не чаще раза в сутки. Это сделано для того, чтобы пользователь, например, утром себе не включал дорогую подписку с проверкой раз в 15 сек, а на ночь переключал ее на дешевую раз в 15 мин. В результате (поскольку списание средств происходит ночью) получал бы дорогую услугу весь день, а платил бы за дешевую.

свой черный список

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

Также в черный список автоматически попадают объявления, у которых более 50 просмотров. Т.к. это поднятые, старые. Их смотреть чаще всего не интересно, раз за месяц никому не понядобилось.

Ведение черного списка
Ведение черного списка

В "Отосланных объявлениях" можно посмотреть что реально и когда вам было отправлено.

Запросы на юлу для указания поиска по всей России

почему их нельзя передать через адресную строку

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

Поиск в зоне 100км от Москвы
Поиск в зоне 100км от Москвы

пример пакета для указания города

Оказалось идет примерно такой запрос:

POST /web-api/geo/save_location
и аргументы у него типа таких

POST https://youla.ru/web-api/geo/save_location HTTP/1.1
Accept: application/json; charset=utf-8
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.7113.93 Safari/537.36
Referer: https://youla.ru/sankt-peterburg/kompyutery?attributes[price][from]=0&attributes[price][to]=0&attributes

%5Bsort_field%5D=date_published&attributes%5Bterm_of_placement%5D%5Bfrom%5D=-1%20day&attributes%5Bterm_of_placement%5D%5Bto%5D=now
Connection: keep-alive
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Origin: https://youla.ru
Content-Type: multipart/form-data; boundary=---------------------------364457938716144960591617470684
X-CSRF-Token: null
Host: youla.ru
Content-Length: 643
Cache-Control: no-cache
-----------------------------364457938716144960591617470684
Content-Disposition: form-data; name="type"

point
-----------------------------364457938716144960591617470684
Content-Disposition: form-data; name="title"

moskva
-----------------------------364457938716144960591617470684
Content-Disposition: form-data; name="lat"

55.750446
-----------------------------364457938716144960591617470684
Content-Disposition: form-data; name="lng"

37.617494
-----------------------------364457938716144960591617470684
Content-Disposition: form-data; name="r"

50000
-----------------------------364457938716144960591617470684--

детальнее сможете по названию запроса в фидлере сами посмотреть. Но в общем передается город, его коррдинаты,
и радиус поиска.

Детали запроса для указания географической точки

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

Борьба с капчей

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

  1. Стал в ответе с сервера искать строку "div class="h-captcha""

  2. Стал анализировать размер ответа от сервера. Примерно понимая какой объем дает нормальный ответ с объявлениями, тоже ввел какие-то рамки. Если ответ имеет крошечный размер (менее 10 кбайт) то тут явно что-то не то.

Затем на основании этих проверок я сделал информирование админа системы (т.е. себя) что шухер, капча вылезла. И первое время
так бывало.

Потом ковыряясь с запросами из разных браузеров я обнаружил что есть один особый браузер (не скажу какой :-)))) который не попадает в капчу!!! Остальные просят автобусы и мотоциклы, а этот нет!!! Это было офигенное открытие. Я снова запустил свой любимый фидлер и стал анализировать детали запросов от разных браузеров. И различия нашлись. Они были в куках. Хрен их знает что они реально означают, но я их просто скопировал в сой запрос и капча больше не появлялась. Это был успех. Уже месяца 3 я так и живу, капчи больше нет.

Получение дополнительной информации

Далее я заметил, что нельзя полностью судить об объявлении по его заголовку и цене. Очень часто бывает что цена ноль руб, а в тексте написано "цена договорная" или "отдам почти даром" и т.п. Т.е. если я ищу что-то совсем бесплатное, то надо анализировать и текст объявления тоже.

текст объявления

Как оказалось текст получить очень просто. При переборе объявлений из основного запроса, я получал ссылки вида:

https://www.avito.ru/sankt-peterburg/remont_i_stroitelstvo/otdam_besplatno_nalivnoy_pol_2247830648

вот на этот URL я и сделал GET запрос. В ответ приходит сама страничка объявления. Из нее элементарно вылавливается текст, и вообще все что надо. А именно:

  • сам текст

  • ближайшая станция метро и расстояние до нее (или если не указано, примерный район отдачи)

  • можно выловить даже географические координаты

  • количество просмотров (всего и за сегодня)

По количеству просмотров можно отсечь "как бы интересные объявления", но реально те, которые были подняты. Т.е.
совсем реально не интересные. Что-то ценное уходит за минуты, никто их не поднимает.

Программа вылавливает просмотры и тексты объявлений
Программа вылавливает просмотры и тексты объявлений

Практика использования программы и последние интересные отдачи.

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

Так от холодильников и прочей тяжелой техники я устал да и погодка сейчас стоит не подходящая. Последний холодильник я нашел в Сестрорецке (а я тогда был на даче сравнительно недалеко). Холодильник оказался Bosch двухкомпрессорный и охренеть какой тяжелый. Счастье было что его отдавали на 1 этаже и мне помогли его спустить, спасибо добрым людям. Он оказался рабочим, как и обещали и почему-то сильно широким, сантиметров на 10 шире обычных холодильников. После помывки пойдет на дачу.

Сейчас расскажу что интересного удалось получить за последнее время.
Самый удачный день был как ни странно 13 декабря. Было 5 отдач (мой рекорд) и чуть не вышла 6ая отдача.

Сначала я получил wi-fi роутер TP- Link Archer C5 (это двухдиапазонный с USB разъемом) и 4мя антеннами. Отдавали как дохлый. Но он почему-то оказался совсем не дохлый. Я в него даже 4G модем воткнул и получил скорость по LTE 90 мбит на скачку. Сильно удивился.

Роутер за 9 тысяч ;-)
Роутер за 9 тысяч ;-)

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

Настольный вентилятор
Настольный вентилятор

Потом я поехал за двумя шуруповертами в кейсах, но их хозяин не смог найти и поэтому в качестве утешительного приза подарил мне исправный перфоратор в кейсе также. Кстати, через 2 дня, шурики нашлись и мне их отдали.

Перфоратор
Перфоратор

Затем на очереди были рации. С дальностью 11 км над водой и зарядным стаканом. После зарядки рации ожили и отлично работают. Летом применю их на даче/лесу/заливе.

Рации (работают после зарядки)
Рации (работают после зарядки)

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

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

Электронная книга
Электронная книга

Вот такой денек выдался сложный.

Холодильник - монстр на прицепе. Готов ехать ко мне на дачу
Холодильник - монстр на прицепе. Готов ехать ко мне на дачу
Магнитофончик. Тяжелый
Магнитофончик. Тяжелый

До этого еще из интересного встречалось:

  • мойка/очиститель воздуха Daikin MCK75J (а стоит она от 71200 руб и выше!) в рабочем состоянии

  • несколько ЖК мониторов ("квадратные" уже не беру, т.к. затовар, беру широкоформатные. То 20" то 22") бывает со вспухшими кондерами в БП, легко чинится. Сложно только аккуратно монитор вскрыть чтобы не поцарапать и ничего не сломать внутри

  • ноутбукам я счет потерял. Обычно дохлые, ломаные петли, морально устаревшие, но их у меня уже столько что почти всегда встречаются похожие из которых из 2...3х можно собрать один нормальный.

  • бесперебойник APC Back ups 1100VA да еще с двумя "пилотами", т.е. разветвителями питания

  • дрель СССР в металлическом корпусе. Шнур аж из резины! Не ПВХ. Был оборван внутри и очень окислен,
    обрыв откусил, залудил, купил новые щетки, но пока не успел из вставить.

  • две отдачи фанеры. 4 и 6 мм листы. А такой лист от 600 до 900 руб. у нас стоит.

  • 29 листов пеноплекса оранжевого, тоже недешовая вещь.

  • катушечный магнитофон Астра-110 стерео. В нем чистил пыль, смазку менял. Заклеил трещину в прозрачной крышке. Купил на юноне пробную бобину, магнитофон ее проиграл.

  • и ЦЕЛЫЙ СКЛАД видеодомофонов!!! Куча всяких запчастей и новых в коробках. Все итальянское изготовитель BPT. Просто гора электроники. Одних блоков питания на DIN рейку штук 50 наверное. Вызывные панели, видеодомофоны, блоки расширения, интерфейсы куда-то, трубки, и еще гора всего. Угол гаража от пола до потолка заложил. Все это первично отсортировал, выкинул явный хлам, только выкинул 6 коробок, еще буду выставлять на авито.

    вапавпвап

Источник: https://habr.com/ru/post/596307/


Интересные статьи

Интересные статьи

ВведениеДобрый день, уважаемые коллеги.В части 1 мы начали краткий обзор   вариантов   построения современных систем видеонаблюдения, место серверов и регистраторов в них.По отзыва...
По ходу разработки генератора кода для виртуальной машины понял, что виртуальная машина не готова к полноценным вызовам функций, с передачей аргументов и хранению локальн...
В прошлой статье мы познакомились с Вами с исторически первым способом организации построения multicast VPN с помощью технологий PIM и mGRE (Часть 1, Profile 0). На сегодняшний день суще...
КДВП © Diana, made by Siuzanna Часть 2. Практическая Вы твёрдо решили построить свою домашнюю солнечную станцию? Взвесили все риски, нашли финансирование, прикинули взором, где она будет ст...
Часть первая. Вводная Часть вторая. Настройка правил Firewall и NAT Часть третья. Настройка DHCP Часть четвертая. Настройка маршрутизации Часть пятая. Настройка балансировщика нагрузки ...