Задать вопрос
  • Почему я могу зайти на сайт по его домену но не могу по ip?

    Когда в браузере вводите адрес, происходит примерно следующее:
    1. браузер переводит имя в ip адрес и подключается к нему.
      Когда ввели вместо имени ip, сразу понятно, куда подключаться.
    2. там отвечает веб-сервер. После соединения браузер по протоколу HTTP «здоровается» с сервером и говорит, что ему надо. Это, в общем-то, похоже на обычный текстовый чат. Браузер пишет первым:
    GET / HTTP/1.1
    Host: web.site.com
    Accept-Language: ru
    Обратите внимание на заголовок Host — тут тот адрес (без дальнейшего пути /a/b/c/index.php), который ввели в браузере. Если ввели именно ip, он и будет там в заголовке Host.

    Теперь дело за сервером, как он настроен. Часто на одном сервере, на одном ip, располагается несколько сайтов. И сервер понимает, какой сайт запросили, именно по заголовку Host.

    Вполне можно настроить веб сервер, что ему делать, когда в поле Host находится ip-адрес: отдавать какую-нибудь заглушку, или основной, единственный сайт.
    Ответ написан
    Комментировать
  • Какие существуют способы контроля доступа к telegram-боту?

    YuriyVorobyov1333
    @YuriyVorobyov1333
    Software Developer
    Является, вы не сможете подменить id

    Плюс в самом telegram многое завязано на айдишники

    А говоря про контроль доступа, никто не запрещает использовать тот же RBAC, но тут вам все равно понадобится id пользователя

    А есть еще вот такой вариант

    Исходя из вопроса вы направлены на одного определенного пользователя, это все выглядит несколько избыточно, пользователь в telegram уже аутентифицирован, и его id подходит для авторизации без нагромождения лишнего кода, но если вам нужно предоставить доступ группе пользователей, то лучше прикрутить роли
    Ответ написан
    Комментировать
  • Как нужно собирать датасет для модели бинарной классификации?

    @rPman
    Обязательно нужно собирать посты на ВСЕ тематики, точнее все, которые могут быть поданы на вход твоего алгоритма.

    Если твоя модель не будет большой языковой, чтобы не тратить время зря, вычищай данные, например вычищай пунктуацию, чтобы после точки и запятой к примеру следовал один пробел (или вообще убери), выявляй строки кода и текста (в каком то смысле это ты и так будешь делать чтобы автоматизировать разметку большинства IT тематики, код на большинстве языков программирования формализуется очень хорошо и код для определения строки как код на языке программирования написать не сложно, хотя есть нюансы), скорее всего текст с кодом и так будет it тематикой, а значит сам код не нужно подавать в модель, но вот обрамляющий его текст лучше подать с пометкой - it.

    p.s. модель llama, точнее openassistent 30b, неплохо читает новости и отвечает на вопросы, в т.ч. по категории (очень сложно составить правильный запрос), на десктопном процессоре 60 русскоязычных постов по ~7кб она читает примерно 4 часа. Так как модель прекрасно знакома с кодом, ответить на вопрос она сможет.

    ~/llama.cpp/main -t 4 -m /d/OpenAssistant/oasst-sft-6-llama-30b-22042023-q4_0.bin -n 64 --temp 0 -f prompt.txt
    ### Input:
    
    Классификация
    Как нужно собирать датасет для модели бинарной классификации?
    Я хочу создать модель, которая бы выявляла посты из соцсетей на IT-тематику. Какой подход для этого нужно выбрать -
    1) собрать как можно больше постов из соцсетей, в том числе на IT-тематику,
    2) или собрать только посты на IT-тематику?
    Если нужен первый подход, то в каком соотношении надо брать посты на IT-тематику и остальные?
    
    ### Question:
    
    Тема этого сообщения IT или нет? ответь да или нет.
    
    ### Answer:
    
    Да [end of text]
    58 секунд
    ### Input:
    
    Биолог Зоя Зорина о трактовках сознания, способности к самоузнаванию у дельфинов и экспериментах по выявлению сознания у животных
    Сознание — одно из сложнейших проявлений психики человека, которое трактуют по-разному представители разных наук. До недавнего времени его рассматривали только как «высшую, свойственную лишь человеку форму отражения объективной действительности, способ его отношения к миру и самому себе… Сознание представляет собой единство психических процессов, активно участвующих в осмыслении человеком объективного мира и своего собственного бытия. Оно… неразрывно связано с языком» и «со способностью идеального воспроизведения действительности в мышлении» (БЭС, 1996). Есть и еще более отвлеченное представление о сознании как о явлении, не сводимом только к работе мозга, как о «со-знании», совместном знании нескольких индивидов. Вполне очевидно, что искать этот уровень сознания у животных не приходится, и считалось, что в процессе эволюции психики животные останавливаются на стадии интеллекта, а стадии сознания достигает только человек (Леонтьев, 1952).
    
    ### Question:
    
    Тема этого сообщения IT или нет? ответь да или нет.
    
    ### Answer:
    
    Нет [end of text]
    119 секунд
    Ответ написан
    Комментировать
  • Как нужно собирать датасет для модели бинарной классификации?

    Maksim_64
    @Maksim_64
    Data Analyst
    Бинарная классификация, подразумевает два варианта пост на IT тематику (True) или (False). Соответственно, только первый вариант, если учебный дата сет не будет содержать разных постов, то обучаться будет не на чем.

    Насчет пропорций, здесь интереснее. И так в реальности мы имеем куда более вероятное событие пост не IT чем IT. Но при создании модели нам нужно что бы наши пропорции были примерно равны или около того. Иначе мы будем иметь то что называется bias. У нас например в тренировочном сете значительно больше постов которые не IT и соответственно, мы уже имеем ПРЕДРАСПОЛОЖЕННОСТЬ. Что плохо. По этому изначально, для классификатора, не должно быть такого понятия, как НЕ IT пост более вероятен.

    Это общее правило с которого могут быть ответвления, например, когда есть датасет в котором одного класса сильно больше делают еще одну выборку с весами (resampling), то есть выбирают не с равными вероятностями. И потом получают близкое к равное распределение.

    В каких то случаях (редко) допускается и отклонения от этого правила, на уровне инженерных причин. Но стартовые позиции, как я описал выше.
    Ответ написан
    Комментировать
  • Можно ли использовать USB-токен для разблокировки системного диска в BitLocker?

    @0x0f80
    BitLocker позволяет использовать USB-токены для разблокировки системного диска, но не все токены подходят. Чтобы токен работал с BitLocker, он должен быть совместим с функцией автоматического ввода PIN-кода в Windows и соответствовать стандарту FIPS 140-2.
    Ответ написан
    Комментировать
  • Можно ли настроить аутентификацию по USB-токену перед загрузкой операционной системы?

    @KillJ0y
    Сделать можно, работает в Linux, требуется USB token с поддержкой openpgp, создаёте подпись, подписываете ядро, и Luks шифрование диска с ключевым файлом на токене. Сертификат проверяет подпись ядра на действительность через индикатор на токене сообщает что все ок, а дальше расшифровать диск пин токена+пароль+и ключевой файл на токене
    Ответ написан
    1 комментарий
  • По каким признакам можно выявить сканирование портов?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    //COPY01 EXEC PGM=IEBGENER
    По разным. SYN+ACK например явное сканирование, SYN+FIN и вообще перебор "нелепых" сочетаний флагов пакета. Если соединение не в состоянии NEW, а пришел SYN - однозначно сканирование. Вообще стоит ман по nmap почитать - там как раз описано множество техник сканирования портов, он же сканировщик :)
    Ответ написан
    Комментировать
  • По каким признакам можно выявить сканирование портов?

    Tkreks
    @Tkreks
    Системный инженер
    По признаку попытки открыть соединение с разными портами за короткий промежуток времени. Т.е. допустим, к вам поступают пакеты на порты допустим с 10 по 1000 в течении одной минуты, ну этой явный перебор портов.
    Вообще сейчас сканеры портов очень умные, сканируют определенные диапазоны и с определенной частотой, поэтому как правило выявить их сложно. Если вопрос в блокировке, то рекомендую вносить IP адрес в черный список, когда он пытается постучать в заведомо закрытый порт. Т.е. у вас SSH не на стандартном порту 22, а допустим на 222, если кто то стучит на 22 порт, вносим его в черный список сразу.
    Ответ написан
    1 комментарий
  • Почему в получаемый при парсинге HTML-код страницы добавляются обратные слэши?

    @dima20155
    you don't choose c++. It chooses you
    Самый топорный способ:
    Если bs4 не смог справиться с парсингом, то можно просто заменить слеши:
    text = r.text.replace('\\"', '')
    soup = b(text, 'html-parser')
    Ответ написан
    Комментировать
  • Можно ли установить антивирус таким образом, чтобы он срабатывал перед брандмауэром?

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

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

    Антивирус - это приложение, контролирующее запуск приложений на машине и проверяющее их на возможное наличие вирусов (с блокированием их при обнаружении, часто до того как они начнут работать).

    Часто, если брандмауэр встроен в антивирусное приложение, возможен анализ файлов, проходящих по сети (например smb), включая http (но с повальным использованием https это стало бессмысленно но не невозможно) или к примеру загружаемых браузерами

    Ты не можешь менять порядок работы антивирусного пакета сеть/файлы потому что это идеологически разные вещи, фаервол стоит до по определению и не может быть после.
    Ответ написан
    Комментировать
  • Как остановить цикл при вводе последующей команы AIOGRAM (Python)?

    Не надо использовать цикл while в асинхронном коде, да и в целом если бот рассчитан на более чем одного пользователя
    Используйте storage
    from aiogram.contrib.fsm_storage.memory import MemoryStorage
    
    storage = MemoryStorage()

    from aiogram.dispatcher import FSMContext
    
    @dp.message_handler(commands=['start'])
    async def start(message: types.Message,  state=FSMContext):
        await message.answer('Вы ввели команду /start, введите команду /stop или /cancel чтобы выйти из меню')
        await state.set_state(YourState.name_state)
    
    @dp.message_handler(commands=['stop'], state=YourState.name_state)
    async def stop(message: types.Message,  state=FSMContext):
        await message.answer('Вы ввели команду /stop')
        await state.finish()
    
    @dp.message_handler(commands=['cancel'], state='*')
    async def cancel(message: types.Message,  state=FSMContext):
        current_state = await state.get_state()
        if current_state is None:
            return
        await state.finish()
        await message.answer('Вы ввели команду /cancel')
    Ответ написан
    Комментировать
  • Как парсить посты телеграм с помощью pyrogram?

    drygdryg
    @drygdryg
    Python-разработчик
    Сначала требуется узнать ID целевого канала. Это можно сделать, используя сторонние клиенты Телеграма (Котатограм для ПК или Graph для Android, к примеру).
    Затем написать вот такой обработчик сообщений, который будет реагировать только на сообщения с канала, ID которого задан переменной CHANNEL_ID:
    from pyrogram import Client
    from pyrogram import types, filters
    
    
    CHANNEL_ID = -11012345678
    
    app = Client(
        "my_account",
        api_id=12345,
        api_hash="0123456789abcdef0123456789abcdef"
    )
    
    
    @app.on_message(filters=filters.channel)
    def my_handler(client: Client, message: types.Message):
        if message.chat.id != CHANNEL_ID:
            return
        print("Получено новое сообщение с ID", message.message_id)
        # Как-то обработать сообщение с канала, например, напечатать его текст
        print("Текст:", message.text)
    
    
    app.run()

    Здесь можно посмотреть описание объекта Message, чтобы работать с ним в дальнейшем: https://docs.pyrogram.org/api/types/Message#pyrogr...
    Также можно исключить события редактирования сообщений (получение отредактированных сообщений с канала), для этого нужно передать в декоратор следующие фильтры:
    @app.on_message(filters=filters.channel & ~filters.edited)
    Ответ написан
    5 комментариев
  • Как устранить ошибку ssl сертификата в Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Устанавливаете пакет свежих корневых сертификатов
    pip install certifi
    и используете их для валидации
    import certifi
    
    r = requests.get(url, verify=certifi.where())
    Ответ написан
  • Почему exe-файл бота на aiogram запускается не на всех компьютерах?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Почитайте тут. Вроде ваш случай там описан. Или очень похожий.
    Ответ написан
    Комментировать
  • Почему после сборки exe-файла через Pyinstaller приложение не читает config.ini?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    пути
    влепи относительный и проверь
    ли научись делать корректно абсолютный
    Ответ написан
    Комментировать
  • Почему после сборки exe-файла через Pyinstaller приложение не читает config.ini?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Потому что при запуске такого exe происходит распаковка скрипта и интерпретатора во временный каталог и запуск их оттуда. Так что переменная path указывает не туда, куда вы ожидаете, конфига там нет.
    Ответ написан
    Комментировать
  • Как в telegram боте совершать определенное действие каждые несколько часов?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    import asyncio
    
    from aiogram import Bot, types
    from aiogram.dispatcher import Dispatcher
    from aiogram.utils import executor
    
    DELAY = 7200
    
    bot = Bot(token='BOT TOKEN HERE')
    dp = Dispatcher(bot)
    
    @dp.message_handler(commands=['start', 'help'])
    async def send_welcome(message: types.Message):
        await message.reply("Hi!\nI'm EchoBot!\nPowered by aiogram.")
    
    
    async def update_price():
        ...
    
    
    def repeat(coro, loop):
        asyncio.ensure_future(coro(), loop=loop)
        loop.call_later(DELAY, repeat, coro, loop)
    
    
    if __name__ == '__main__':
        loop = asyncio.get_event_loop()
        loop.call_later(DELAY, repeat, update_price, loop)
        executor.start_polling(dp, loop=loop)

    Естественно, стоит позаботиться о том, чтобы внутри update_price не вызывались блокирующие операции.
    Ответ написан
    2 комментария
  • Как записать текст из команды Telegram в переменную?

    @igro_sia Автор вопроса
    Познаю Python
    Вот решение моего вопроса
    Все оказалось проще простого
    @bot.message_handler(commands=['1'])
    def handle_text (message):
        bot.send_message(message.chat.id, "Введите данные")
        @bot.message_handler(content_types=['text'])
        def handle_text(message):
            txt = message.text
            print(txt)
    Ответ написан
    4 комментария