Задать вопрос
  • Какая библиотека идентична с requests и bs4, но парсит сайт с JS?

    requests решает всего одну задачу - отправку http запросов.
    bs4 - только html парсит.

    Если тебе нужен парсинг и выполнение js - тебе нужен программно-управлякмый браузер.
    Как пример - уже упомянутый selenium или playwright.

    Переписать уже написанный код тебе в любом случае придётся.
    Ответ написан
    Комментировать
  • Как добавить несколько наименований в одну метку?

    0xD34F
    @0xD34F Куратор тега Яндекс.Карты
    Сгруппируйте данные по координатам:

    const grouped = productData.reduce((acc, n) => (
      (acc[n.coordinates] ??= []).push(n),
      acc
    ), {});

    Соответственно, когда будете собирать строку для ballonContent метки, вместо одного объекта придётся пробежать по массиву объектов:

    for (const [ coord, data ] of Object.entries(grouped)) {
      const placemark = new ymaps.Placemark(
        coord.split(',').map(parseFloat),
        {
          balloonContent: data
            .map(n => `
              <div>
                ${n.address}
                <br>
                <a href="${n.productURL}">Подробнее</a>
              </div>`)
            .join(''),
        },
        {
          preset: 'islands#blueDotIcon',
          maxWidth: 300,
        }
      );
    
      map.geoObjects.add(placemark);
    }

    Или, воспользуйтесь кластеризатором:

    const placemarks = productData.map((n, i) => new ymaps.Placemark(
      n.coordinates.split(',').map(parseFloat),
      {
        balloonContent: `${n.address}<br><a href="${n.productURL}">Подробнее</a>`,
        clusterCaption: `Адрес №${i + 1}`,
      },
      {
        preset: 'islands#blueDotIcon',
        maxWidth: 300,
      }
    ));
    
    const clusterer = new ymaps.Clusterer({
      clusterDisableClickZoom: true,
    });
    
    clusterer.add(placemarks);
    map.geoObjects.add(clusterer);
    Ответ написан
    1 комментарий
  • Как откатить результат если не комитил?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Неважно, что вы делали, гит перед каждым изменением записывает хэш указателя текущей ветки в специальный журнал — reflog. Соответственно вы можете этот журнал посмотреть командой git reflog
    А можно просто сослаться на порядковый номер в журнале и откатить текущую ветку на два шага назад:
    git reset --hard HEAD@{2}
    Как-то как.
    Ответ написан
    Комментировать
  • Как распарсить этот XML?

    Maksim_64
    @Maksim_64
    Data Analyst
    С твоей библиотекой не работал, но с BeautifulSoup все работает как надо.
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(data, 'xml')
    name = soup.find('ns2:Name').text
    surname = soup.find('ns2:Surname').text
    email = soup.find('ns2:Email').text
    birthday = soup.find('ns2:Birthday').text
    Ответ написан
    2 комментария
  • Как уберечь аккаунт от бана несовершеннолетнему на Апворк?

    @Stalinko
    PHP'шник и фрилансер до мозга костей
    Ты сам никак не можешь работать по правилам.

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

    На данный момент, если ещё есть возможность - выведи все деньги и попробуй договориться с апворком, чтобы сделали временный бан, пока тебе не исполнится 18.
    Если вывести уже нельзя, то сделай возврат работодателю и попроси, чтобы он сделал оплату на другой аккаунт, который ты зарегаешь.

    Как-то так.
    Ответ написан
    8 комментариев
  • Как использовать один компонент с разными типами данных?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Наверное ты хочешь этого:
    type Props = { data?: ITemplate } | {}
    const CreateTemplateForm: FC<Props> = (props) => {
      if ('data' in props && props.data) {
        
        return ...;
      }
    
      return ...;
    }
    Ответ написан
    5 комментариев
  • Что изучать после Тони Гэддиса Начинаем изучать пайтон?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Просто сравните содержание у Лутца, Сварупа и Гэддиса. Во первом раза в два больше тем рассмотрено. Но ни у кого из них не рассмотрена асинхронность, так что после Лутца стоит почитать ещё и документацию. А Ромальо лучше читать имея хотя бы базовый опыт, чтобы двинуться к вершинам мастерства надо сначала к самому мастерству прийти.
    Ответ написан
    Комментировать
  • Как организовать блокировку ip адресов?

    @SunTechnik
    1. В приведенном списке все адреса из одной сети. (192.168.0.0)

    Судя по тому, что такой вопрос вообще возник, используется WiFi. С какого устройства идет раздача WiFi и интернет?

    2. Какой способ шифрования WiFi сети используется? (рекомендуется wpa2, 3. Плохо - wep)

    3. Для начала: смените пароль WiFi, отключите wps.

    Правильно ли я понимаю, что претензии к адресам 10, 13?

    У Вас есть робот пылесос?
    Ответ написан
    3 комментария
  • Что может отслеживать конкретный сайт и как с этим бороться?

    @rPman
    Косвенная информация о месторасположении
    - по ip адресу клиента и по времени ответа можно выявить наличие vpn и даже расстояние от клиента до выходной ноды vpn
    - наличие прокси, с теми же возможностями, а если прокси внезапно на том же адресе что и выходной ip и анонимна, то анализ может быть более подробный

    Атака на сеть
    - можно анализировать локальную сеть запросами, подбирая ip адреса и типовые порты можно обнаружить наличие роутера и даже его тип (cors не дает читать содержимое https->http но есть информация о заголовках и самом факте верного ответа), помимо роутера программисты часто в десктопных приложениях поднимают веб сервер (особо криворукие - без авторизации), это можно обнаружить и при наличии ошибок даже на него повлиять (повторяю, пользователь заходит на веб сайт, и его локальная сеть может быть просканирована, уязвимые приложения найдены и атакованы... я наблюдал как сбер онлайн делал такое сканирование, делая запросы к localhost по разным портам), примером таких приложений могут быть remote control медиа плееров.
    - XSS/CSRF. открывая уязвимые веб приложения в прозрачном iframe можно двигать его под мышь пользователя таким образом, чтобы пользователь не ведая того, кликак в этом приложении в нужных местах (уязвимое приложение будет открыто с авторизацией пользователя, это оправдано и такие еще встречаются), доступа к данным не будет но действия пользователя пройдут.
    - можно просто ddos-ить какой-либо сайт запросами, которые будут идти от пользователя но referer так подделать нельзя, т.е. будет видно кто виновник (понятно что в iframe можно открыть заранее сгенерированные мусорные домены)
    Помню в одном веб приложении была ошибка, оно не проверяло результат и случайно ddos-ило гугловский сервис, который в результате отказывал в обслуживании пользователю вне этого веб приложения.
    - используя webrtc можно даже вылезти в локальную сеть (найти соседний браузер без proxy/vpn если там тоже открыта страница сервера)
    Было время, когда при использовании java applet/flash/silverlight и прочих нативных аддонов, можно было еще сильнее вылезать из браузерной песочницы и вытворять в сети пользователя лютую дичь.
    - есть какие то направления в атаке через уведомления (если ты подписываешься на них на сайте, всплывающее окошко с ним открывается в ином контексте безопасности чем оригинальная страница), я не изучал но наверняка тут тоже можно что то вытянуть

    Типовая информация о железе
    - характеристики монитора (разрешение, масштабирование, глубина цвета - хотя все уже 32бит но слабые железки могут быть все еще 16битными)
    Из размера окна можно вытянуть информацию об операционной системе, нестандартном оборудовании и установленных темах, меняющих его размер
    - производительность cpu и gpu замеряя их бенмчмарками
    можно вычислять размер кеша и от сюда косвенно получать информацию о модели процессора и даже о вендоре intel/amd/... arm
    - почти полную информацию о gpu и даже попытку скрыть ее за виртуальной машиной
    - через тайминги и сетевой бенчмарк можно собрать информацию о скорости сети (ethernet или wifi)
    - через storage api можно собрать бенчмарки по скорости жесткого диска, как минимум можно понять hdd или ssd
    - инструмент ввода мышь/тачпад, даже если ты на планшетнике запускаешь мобильный браузер в режиме и в режиме PC, по тому как работает пользователь с тачпадом можно вытянуть информацию (отсутствие mousemove там где оно должно быть)

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

    Информацию о софте
    - класс браузера (firefox/chromium и при желании opera/edge/...) по поведению javascript и многим специфическим особенностям и само собой по заголовках запроса по useragent (это само собой подменяется)
    - наличие некоторых плагинов (по тому что они добавляют на странице, например api или специфические изменения)
    например блокировщики рекламы выявляются не сложно, правда лучше прикручивать автоматизацию на основе публикуемых правил

    Доступ к clipboard
    - clipboard api не дает доступа к буферу обмена, но при клике на страницу возможна его подмена, типовой пример - пользователь держит в буфере финансовую информацию (номер счета например) и кликая по 'сайту с инструкциями' может получить подмену содержимого буфера и вставить эту подмену как адрес для денежного перевода.

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

    p.s. а сколько открывается дивных возможностей, когда веб сервис запрашивает доступ к чему то еще и пользователь его разрешает, типа камера, положение по gps, доступ к clipboard,..

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

    pro100taa
    @pro100taa
    Это потому что между Гуглом и Яндексом огромная разница.

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

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

    Кроме того у вас на сайте много чего не хватает для прорыва в ТОП. Но это уже другая история: в вопросах и ответах ее не рассмотришь.
    Ответ написан
    7 комментариев
  • Почему не работает innerHTML?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    я правильно понимаю что вы меняете innerHTML у строки, полученной из innerHTML?
    Ответ написан
    Комментировать
  • Почему итератор нужно делать итерируемым?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Посмотрите на результат выполнения следующего кода с [Symbol.iterator]() { return this; } и без:

    const iter = new Range(1, 5)[Symbol.iterator]();
    console.log(iter.next().value);
    console.log(iter.next().value);
    console.log([...iter]);
    Ответ написан
    2 комментария
  • Docker соединяет frontend и backend?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Можно с докером, можно без. Можно раздельно, можно вместе. По-разному можно, в общем.
    Ответ написан
    Комментировать
  • Где найти ActivePerl для разработки под Symbian?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    скачай книжку целиком - там у этого *удака автора или редактора - как и я говорил - опечатка, в тексте идет

    Обратите внимание, что версия JRE различается
    в зависимости от используемой вами SDK — скачайте нужную. В то же время
    ActivePerl должен быть именно версии 5.6.1.x — более старые или новые не подойдут.


    На ПК должен быть установлен транслятор ActivePerl 5.6.1.635 и хотя
    бы один комплект SDK.


    по ActivePerl 5.6.1.635 найдешь ActivePerl-5.6.1.635-MSWin32-x86.msi дальше дело техники

    ===================== мой предыдущий ответ ======================================
    нигде
    ни в веб архиве

    ни в википедии такой версии нет и
    быть в 2010м не могло
    web.archive.org/web/20111112045003/https://www.old...

    https://web.archive.org/web/20190512184037/https:/...

    в книге ошибка

    тебе нужен

    ActiveState Perl Dev Kit Pro Pack-6.0, выпущенный на 18.02.2008.

    вот от этих букв пляши и ищи

    тут внизу пишут https://www.activestate.com/products/perl/

    Need Older Versions? Start a 14-day Pro Account Trial to Access Our Expanded Catalog
    A Pro Account subscription gives you access to additional versions of our languages, and much more.

    как вариант

    вот тут можно походить по директориям и версиям но что-то 6.5 не светит даже близко
    https://web.archive.org/web/20090411165149/http://...

    к сожалению книга изначально нашего автора, наверно еще и без норм редктора выпускалась
    остается писать в Вильямс или искать опечатки
    Ответ написан
    1 комментарий
  • SyntaxError: Unexpected token 'P', "POST-запро"... is not valid JSON, как исправить эту ошибку?

    @holllop Автор вопроса
    у меня ошибка. я не правильно обрабатывал на сервере. Спасибо Михаил Р., он помог обнаружить ошибку.
    Ответ написан
    Комментировать
  • Как сгенерировать изображение чека из данных?

    @rPman
    Продумай вариант генерации изображения на стороне клиента средствами браузера, т.е. штатно. Ты генерируешь html на php, а браузер отображает и по ctrl+p позволяет его пользователю распечатать...

    в довесок скопировать составляющие как текст и вообще это удобнее.
    Ответ написан
    1 комментарий
  • Как дропнуть все таблицы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе проще новую базу создавать каждый раз. Я так делал. А старая пускай лежит как бекап.
    Создаешь db1, db2, db3.... Потом удаляешь которые уже не нужны.

    Или в докере разворачиваешь если пустая нужна.
    Ответ написан
  • Видит ли работодатель мой трафик?

    Aetae
    @Aetae
    Тлен
    Выше ребята не упомянули ещё один момент: зачастую для работы с внутренней сетью в месте с VPN прилетает и свой DNS. Т.е. если даже весь трафик не идёт через vpn, а только рабочий - работодатель всё равно видит какие DNS запросы ты делал, т.е. имена посещаемых сайтов(без полной ссылки - только домены).
    Соответственно если в рабочее время от тебя запросы только на youtube да 9gag то можно сделать выводы.:)

    Занимается ли этим шпионажем работодатель на самом деле - это уже другой вопрос.
    Ответ написан
    2 комментария