• Можно ли отправить сообщение боту от бота в телеграм?

    SoreMix
    @SoreMix
    yellow
    Боту от бота - нет.
    Только от имени своего аккаунта, используя pyrogram, telethon и тд
    Ответ написан
    1 комментарий
  • Как вставить хеш recatcha v3?

    Ternick
    @Ternick
    Вообще, если руками делать, то проще всего сделать это так:
    https://rucaptcha.com/api-rucaptcha#solving_recapt...
    Но если нужно именно js решение, то можно так:
    https://rucaptcha.com/api-rucaptcha#invisible

    document.getElementById("g-recaptcha-response").innerHTML="TOKEN_FROM_RUCAPTCHA";
    Ответ написан
  • Как сделать сообщение в отдельном окне бота?

    SoreMix
    @SoreMix
    yellow
    Это результат вызова answerCallbackQuery с установленным параметром show_alert в true
    Ответ написан
    4 комментария
  • На службы виндовс дописались лишние символы?

    Aetae
    @Aetae
    Тлен
    Так windows update работает. А вот зачем и почему, это пусть кто-нить более умный ответит.)
    Моё предположение - чтоб заменять службы без перезагрузки.
    Ответ написан
    Комментировать
  • Почему get_entity не работает?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    telethon - асинхронный. Прочитайте quick start по искользованию
    https://docs.telethon.dev/en/latest/basic/quick-st...

    from telethon import TelegramClient, sync
    Ну или можно импортировать sync
    Ответ написан
    1 комментарий
  • Есть возможность получить статус значка загрузки страницы браузера?

    Aetae
    @Aetae
    Тлен
    Иконка меняется на спинер браузером когда происходит загрузка страницы.(а также объектов, требующих загрузки, типа скриптов, картинок и фреймов).
    Можно быть уверенным, что спиннер крутится, если document.readyState !== 'complete'. Однако если подгрузка чего-то происходит позднее, то, увы, об этом никак (надёжно) не узнать, потому что это поведение - чисто интерфейсное решение браузеров и нигде не документировано.

    Можно заставить его крутиться когда хочешь добавляя и убирая iframe с "вечной загрузкой".
    Но проще просто менять favicon как указал Алексей Ярков.
    Ответ написан
    2 комментария
  • Как удалить папку Program Files c HDD?

    SagePtr
    @SagePtr
    Еда - это святое
    Назначить себя владельцем этой папки и файлов в ней, затем удалять.
    Ещё как вариант, загрузиться в Linux и удалить, Linux игнорирует права доступа NTFS.
    Ответ написан
    Комментировать
  • Как удалить папку Program Files c HDD?

    hint000
    @hint000
    у админа три руки
    пробовал настраивать права админа по всяким статьям
    Сделать себя владельцем папки:
    безопасность - дополнительно - владелец - изменить - выбрать себя - поставить галку "Заменить владельца подконтейнеров и объектов" - применить.
    Ответ написан
    4 комментария
  • Как удалить папку Program Files c HDD?

    Zoominger
    @Zoominger Куратор тега Системное администрирование
    System Integrator
    Станьте её владельцем (Свойства -> Безопасность -> Дополнительно) и удалите.
    Ответ написан
    1 комментарий
  • В чем ошибка условия if?

    Vindicar
    @Vindicar
    RTFM!
    Ты не указал тип arg, поэтому discord.py оставляет его строкой. А "1" (строка) не равна 1 (числу).
    У discord.py есть удобная фишка - если указать в обработчике события параметры и подсказку типа для них, библиотека попытается разобрать введенную пользователем строку на эти параметры, и привести их к нужному типу. Так что напиши что-то типа
    async def test(ctx, arg: int):
    Ответ написан
    Комментировать
  • Как сделать только один запрос в pyTelegramBotAPI?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Можно, отправляете один запрос, который вам нужен, не вызываете polling.

    Если хотите получить апдейты - есть метод getUpdates
    Ответ написан
    Комментировать
  • Как поймать GET запрос от браузера к серверу на selenium python?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Это просто таймстамп (на что название параметра намекает как бы), так что без разницы какие они там будут.
    Под звездочками явно гугл ключ, предположу, что от капчи. Сайткей не будет меняться каждый день, так что его можно просто взять как константу и не парсить каждый раз.
    Если хочется получать ключ каждый раз, то лучше будет просто отправить запрос на этот же эндпоинт через requests. Либо создать и отправить XHR через JS и execute_script(). Если хочется смотреть лог запросов - selenium-wire
    Ответ написан
    9 комментариев
  • Как раньше люди программировали?

    Adamos
    @Adamos
    1 курс, зимняя сессия закончена, каникулы. Путевка от профсоюза в санаторий. Учебник Паскаля из вузовской библиотеки, пару недель чтения, благо больше в санатории все равно делать нечего. По возвращении домой - вставляю в свой "Поиск" дискету с ТрубоПаскакалем, ковыряюсь до изнеможения со словарем, поскольку все на английском, а в школе я его имел глупость подзабросить.

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

    Впрочем, от необходимости думать своей головой и прилагать усилия ни гугль, ни SO не освобождают.
    Ответ написан
    9 комментариев
  • Как раньше люди программировали?

    twobomb
    @twobomb
    Перфокарта
    P.S. А гугл создавали также как и сейчас программируют, им просто повезло что они заняли монопольную позицию
    Ответ написан
    1 комментарий
  • Как раньше люди программировали?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Попробуйте книги почитать, говорят, по ним и учились
    Ответ написан
    2 комментария
  • Как раньше люди программировали?

    DevMan
    @DevMan
    так же как и сейчас: мозгами.
    поисковиков не было, но были книги, друзья/учители и желание этим заниматься.
    Ответ написан
  • Расширение таблицы при парсинге?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    В общем, рассказываю про парсинг.

    Код, который видно на странице через инспектор элементов в браузере - это код, который браузер подготовил для пользователя. Открываете сайт - браузер отправлять запрос на сервер. Запрос состоит из метода, пути, заголовков и тела. После первоначального запроса браузер получает от сервера HTML страницу, в которую включено (обычно) множество JS скриптов, которые в процессе выполнения могут создавать дополнительные запросы на сервер для получения дополнительной информации. После выполнения всех действий, пользователь видит в браузере готовый результат, который отличается от первоначального запроса из-за дополнительных джаваскриптов.

    Если элемент (класс, id, и тд) видно в инспекторе браузера - это не означает, что элемент присутствовал при первоначальном запросе. Чтобы увидеть тот код, который браузер получает первоначально (тот самый код, который вы получите через requests, curl итд) - нужно нажать CTRL+U, либо правой кнопкой -> просмотр кода страницы
    Это - тот самый код, который вы получаете, и все данные нужно искать только в нем, это дает гарантию того, что нужный вам элемент будет присутствовать при выполнении запросов через ЯП.

    Если нужного элемента нет на странице, значит он загружен каким нибудь JS скриптом. Здесь будут два варианта:
    1. JS отправляет дополнительный запрос на сервер, получает нужные данные и вставляет их в HTML.
    2. Данные создаются внутри JS скрипта без запросов (очень маловероятно)

    Если данные появляются в результате дополнительного запроса, то нужно просто повторить этот запрос.

    Чтобы понять, что нужно - нужно воспользоваться любым сниффером трафика. Самое простое - встроенный в браузер логгер запросов. F12 -> Network.
    6124fec4cfd69347854863.png
    Обычно достаточно поставить фильтр на XHR.
    Если есть под рукой Fiddler, то тоже сгодится. Ну и Burp / ZAP как вариант (но очень жирно).

    Алгоритм будет примерно таким:
    1. Открываем вкладку Network
    2. Очищаем историю запросов (если есть)
    3. Желательно поставить галочку "Preserve log", чтобы история не пропадала.
    4. Обновляем страницу. Если контент подгружается при прокретке / по нажатию кнопки - крутим / нажимаем и тд.
    5. Теперь можно нажать CTRL+F все в той же вкладке Network и вписать искомый текст (допустим название товара).
    6. Слева будут те запросы, которые содержат эту подстроку. Теперь нужно просто пощелкать по ним, найти нужный, посмотреть из чего он состоит и повторить его через requests.

    Нужно обратить внимание на заголовки и тело запроса. Не редко при загрузке доп. информации в тело запроса так же передается указатель текущей страницы, или индекс элемента, с которого начинается новый список. Так же в заголовки могут добавиться дополнительные. Например, csrf token, либо X-Requested-With. Если повторение запроса не принесло желанный результат - стоит проверить заголовки и тело еще раз. Если сайт загружает данные при нажатии на кнопки, прокрутке страницы и тд - алгоритм тот же.

    Делюсь хорошим сайтом, который увидел тут: https://curl.trillworks.com/
    Копируете свой запрос как CURL
    612500b91076a776091384.png
    Затем вставляете на сайт. Он выдаст готовый код на Python. Но нужно понимать, что это автоматический процесс и он не всегда выдает правильный результат. В частности, преобразование application/json тела довольно неправильно. Но для копипаста некоторых заголовков подходит вполне. В общем сайтом пользоваться можно, но и самому думать тоже нужно

    Из хороших программ - Postman. Позволит легко и быстро составлять запросы, есть экспорт в Python код. Советую, если запросы довольно тяжелые, чтобы составлять их "наживую".

    Краткая выжимка:
    1. Код через инспектор браузера != коду с запроса requests / curl.
    2. Скорее всего нужные вам данные подгружаются доп. запросами, ищутся через любой мониторинг трафика.
    3. Следите за телом и заголовками запроса. Заголовки, даже самые незначительные, могут влиять на конечный результат.
    4. Старайтесь всегда в заголовки добавлять User-Agent

    Если данные грузятся без доп запросов, лежат в неизвестном формате, или просто лень разбираться - используйте Selenium. Он является таким же браузером, но только с возможностью контролировать его работу
    Ответ написан
    3 комментария