Задать вопрос
  • Как войти в telegram web с помощью selenium и telethon?

    Mike_Ro
    @Mike_Ro Куратор тега Selenium
    Python, JS, WordPress, SEO, Bots, Adversting
    Используя webdriver:
    from selenium import webdriver
    
    browser = webdriver.Chrome()
    browser.get('https://web.telegram.org')
    # 1. вводим телефон
    # 2. вводим смс/пуш с телефона.
    # 3. жмем "войти"

    - Chrome уже должен быть установлен.
    - Telethon здесь не причем (мы же используем Web версию телеги).
    Ответ написан
    Комментировать
  • Что даёт сборка ноутбука с встроенной и дискретной видеокартами?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Что даёт сборка ноутбука с встроенной и дискретной видеокартами?

    Для простых задач - использовать встройку, для сложный - дискретку. По аналогии с энергоэффективными и производительными ядрами ЦП на смартфоне.
    Ответ написан
    Комментировать
  • В чём разница между Выделенной памяти графического процессора и Оперативной память графического процессора?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    В чём разница между Выделенной памяти графического процессора и Оперативной память графического процессора?

    1. Выделенная - память, которая зарезервирована непосредственно за gpu, обычно находится рядом с gpu.
    2. Оперативная - память, которую gpu может использовать из оперативной памяти компьютера, в дополнение к выделенной.
    3. Общая - память, которая является суммой п1 и п2.

    Фотка одной из таких материнок (gpu+vram):
    6565b232a635c217824349.png
    Ответ написан
    2 комментария
  • Как правильно удалить дубли одной страницы?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Попросить не индексировать страницы с любыми url параметрами и страницу /index.php, robots.txt:
    User-agent: *
    Disallow: /*?*
    Disallow: /index.php
    Ответ написан
    2 комментария
  • Откуда после переобхода Яндекс.Вебмастером сайта на Wordpress появились ссылки вида /redir.php?site=http://example.com/?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Могут ли редиректы остаться от старого сайта на домене?

    Могут.
    Ответ написан
  • Если в title указать про vpn сильно может повлиять на выдачу в гугл?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Как сильно это может сказать на выдаче?

    Точные цифры предоставят в гугле, но сайт точно не вырастит в выдаче.

    Вы собираетесь бороться с последствиями, а не первопричиной. У нас "Табуретки в Москве" уже нелегальный контент? Разбирайтесь с блокировкой, а не с seo.
    Ответ написан
    Комментировать
  • Как редактировать контент сайта человеку не знающему HTML (без конструкторов)?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Как сделать так чтобы можно было изменить контент сайта человеку который не знает html&css?

    Если речь именно про контент, то необходимо натянуть сайт на CMS.
    Ответ написан
    Комментировать
  • SEO- оптимизация мультиязычных сайтов?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    для оптимизации на разные гео по сути нужны разные страницы которые индексируются отдельно?

    Язык*регион*страна*интент*словоформа, но зависит от конкурентности конкретной выдачи.
    Ответ написан
    Комментировать
  • Как удалить ненужные символы в строке?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    // returns true if has contain spam
    const checkForSpam = function (message) {
      const c = message.toLowerCase().replace(/[^a-z\s]/g, '');
      const w = c.split(' ');
      return w.includes('spam') || w.includes('sale');
    }
    
    console.log(checkForSpam('[SPAM] How to earn fast money?')); // true

    Но я бы не зашивал в функцию исчерпывающий перечень стоп слов, а передавал их в нее:
    // returns true if has contain spam
    const checkForSpam = function (message, stops) {
      const c = message.toLowerCase().replace(/[^a-z\s]/g, '');
      const w = c.split(' ');
      return stops.some(word => w.includes(word));
    }
    
    console.log(
      checkForSpam(
        '[SPAM] How to earn fast money?',
        ['spam', 'sale']
      )
    ); // true
    Ответ написан
    4 комментария
  • Как конвертировать tdata в session + json?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    TFileNotFound: Could not open key_data [ Called by ReadFile() ]

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

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    VPN не всегда на 100% надежен, он может пропускать некоторые данные, либо его можно попробовать обойти - это утечка DNS или WebRTC, для проверки используйте DNS/WebRTC Leak Test. Меня так забугорная платежная система палила.
    Ответ написан
  • Как вставить содержимое в iframe без src?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Как вставить содержимое в iframe без src?

    document.write():
    1. Создать iframe на странице.
    2. Получить ссылку на document внутри п1.
    3. Вставить данные внутрь п2, используя document.write().
    и будут ли работать при таком решении ссылки через proxy, которые находятся внутри iframe?

    В рамках указанного домена - да, если домен другой - зависит от CORS сервера.
    Ответ написан
    Комментировать
  • Из-за слайдера не открывается всплывающая форма?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    В чем может быть проблема?

    Слайдер fancybox определяет, показывать ему слайдер или нет на основе класса в < html> теге, если там класс десктопа .desktop.portrait (в десктопной версии сайта), то слайдер инициализируется верно и затем может быть открыт по команде, а вот если там класс смартфона .android.mobile.landscape (в мобильной версии сайта), то слайдер пытается инициализироваться, не находит нужный класс в < html>, но все равно продолжает инициализацию, в следствие чего - сыплются ошибки.
    655f00550eb57787059247.png
    Ответ написан
    Комментировать
  • Как корректно работать с react router?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Вы создали не правильную структуру компонентов React Router. < Router> должен быть размещен в самом верху относительно вложенности всех компонентов, обычно это в районе < App>. Так же, для навигации Вы используете href, когда должны использовать компонент React Router - Link.

    Это что такое?
    <Route exact path='/contacts' Component={Contacts} />
    // Component={Contacts} ???

    Попробуйте так (если App является корневым компонентом):
    import React from 'react';
    import {BrowserRouter as Router, Routes, Route, Link} from 'react-router-dom';
    import './App.scss';
    
    import Header from './components/Header';
    import Service from './pages/Service';
    import Contacts from './pages/Contacts';
    import Login from './pages/Login';
    import Home from './pages/Home';
    
    function App() {
      return (
        <Router>
          <div className="App">
            <Header />
    
            <nav>
              <Link to="/">Главная</Link>
              <Link to="/service">Услуги</Link>
              <Link to="/contacts">Контакты</Link>
              <Link to="/login">Вход</Link>
            </nav>
    
            <Routes>
              <Route path="/" element={<Home />} />
              <Route path="/service" element={<Service />} />
              <Route path="/contacts" element={<Contacts />} />
              <Route path="/login" element={<Login />} />
    
              <Route path="*" element={<NotFoundRoute/>} />
            </Routes>
          </div>
        </Router>
      );
    }
    
    // not fount route handler
    function NotFoundRoute() {
      return <div>Page not found</div>;
    }
    
    export default App;

    Header.js:
    import {Link} from "react-router-dom";
    
    function Header(props) {
      return (
        <>
          <header>
            // ...
    
            <Link to="/service">Услуги</Link>
            <Link to="/contacts">Контакты</Link>
    
            // ...
          </header>
        </>
      )
    }
    
    export default Header;
    Ответ написан
    Комментировать
  • Как найти вхождения #слово в JS?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Как из строки
    привет #username text text #username2
    сделать массив
    [привет, #username, text text, #username2]

    https://regex101.com/r/CtgWXN/1
    const string = "привет #username text text #username2";
    const regex = /#\w+|[^#\s][^\s#]*(?:\s+[^#\s][^\s#]*)*/g;
    console.log(string.match(regex)); // ['привет', '#username', 'text text', '#username2']
    Ответ написан
  • Как проверить соответствует ли одна строка другой?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Можно регулярками, но я бы использовал специализированную библиотеку path-to-regexp:
    import pathToRegexp from 'path-to-regexp';
    
    // real route
    const route = '/notifications/:id/';
    
    // regexp
    const keys = [];
    const regexp = pathToRegexp(route, keys);
    
    // test route
    const testRoute = '/notifications/123/';
    
    if (regexp.exec(testRoute)) {
      console.log(`URL match from: ${route}`);
    } else {
      console.log(`URL not match from: ${route}`);
    }
    Ответ написан
    Комментировать
  • Google Forms - как получить только уникальные заполнения?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как можно зафиксировать, что человек уже заполнял форму?

    Гугл аккаунт люди меняют и заполняют 2ой раз.

    Если на 100% надежно, то - никак! Максимально надежно - то только централизованной аунтификацией на Вашем сайте. Т.к. любое хранение куки, localStorage да и тот же Google аккаунт можно изменить. Но опять же, им ничего не мешает зарегать новый аккаунт у Вас в сайте и повторить все махинации.

    В итоге, все упирается в баланс затрат на защиту и выгоду, получаемой в результате данной защиты.
    Ответ написан
    Комментировать
  • Как уменшить потребление памяти Selenium?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Т.к. Вы не показали код своего бота, то вполне вероятно, что сам бот может быть не сильно оптимизирован. Но все равно есть базовые рекомендации:
    - Изначально, не мешало бы измерить потребление памяти в обычном браузере, вполне вероятно, что это стандартное потребление оперативы именно это страницы. Вот например текущая страница в моменте потребляла 177 мб.
    177 мб

    655d9ff7a2446362541329.png

    - Отключить изображения и js браузера, например:
    chrome_options.add_argument("--disable-javascript")
    chrome_options.add_argument("--disable-images")

    - Включить headless (как ранее подметил сергей кузьмин ), помогает сэкономить множество ресурсов:
    options = Options()
    options .add_argument("--headless")

    - Использовать другие браузеры.
    Ответ написан
    2 комментария
  • Как личный кабинет на поддомене влияет на SEO?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть раздел сайта "за авторизацией", закрытый от поисковиков, само-собой.

    А счётчик метрики установлен внутри админки? Если нет, то повлияет на seo, но незначительно.
    Ответ написан
  • Пропадают данные localStorage после нескольких перезагрузок?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    В представленном коде нет мест, где происходит принудительная очистка localStorage после перезагрузки. Вероятнее всего - проблема в браузере, особенно если настроены определённые настройки конфиденциальности или режим инкогнито.
    Ответ написан
    Комментировать