Задать вопрос
  • Как написать комментарий с помощью JS в Facebook?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Вы должны в поле ввода вызвать клавиатурные события отвечающие за ввод, чтобы страница увидела изменения:
    var span = document.querySelector('span[data-text="true"]');
    
    span.focus();
    span.innerHTML = 'Новый текст';
    span.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true }));
    span.dispatchEvent(new KeyboardEvent('keypress', { bubbles: true }));
    span.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true }));
    span.dispatchEvent(new Event('input', { bubbles: true }));
    span.dispatchEvent(new Event('change', { bubbles: true }));
    Ответ написан
    2 комментария
  • Можно ли как то при заходе на любой сайт выполнять js код?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Таких расширений полно, например можете использовать этот:
    https://chrome.google.com/webstore/detail/custom-j...
    Ответ написан
    Комментировать
  • Как сконвертировать Blob в файл PHP?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Blob это и есть файл, когда вы его отправляйте на сервер, с точки зрения php к нему приходит самый обычный файл, словно он отправлен из обычной формы. Тут вопросы могут быть лишь к скрипту, которым вы Blob отслыайте.

    Покажите JavaScript которым Blob шлете.
    Ответ написан
  • Как сделать скачивание файла с редиректом на php?

    zkrvndm
    @zkrvndm
    Архитектор решений
    1. Файл качайте частями при помощи JavaScript в виде Blob, не забудьте только сделать понятную индикацию процесса
    2. Пока качается файл, можете внутри iframe показать любой какой угодно сайт посетителю, в том числе и рекламу
    3. Как только файл докачается отдаете его на сохранение, а iframe закрывайте
    Ответ написан
    Комментировать
  • Можно ли отдать пользователю на скачивание в один момент пару файлов?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Вариантов несколько, самый очевидный это положить картинки в zip-архив и отдать на скачивание именно, что архив. Кроме этого, можно вместо скачивания картинок просто вывести ему html-страницу с мини галереей, где будут эти картинки и рядом с каждой картинкой была бы кнопка: Cохранить на диск
    Ответ написан
    Комментировать
  • Как дать понять что включен js и как представиться роботом при парсинге страницы?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Попробуйте указать те же заголовки, что отсылал бы реальный браузер.

    Пример:
    <?php
    
    // Указываем тип документа и кодировку:
    header('Content-Type: text/html; charset=utf-8');
    
    // Включаем отображение ошибок:
    
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    // Адрес для парсинга:
    $url = 'https://yousite.com';
    
    // Создаём новый сеанс:
    $curl = curl_init();
    
    // Указываем адрес целевой страницы:
    curl_setopt($curl, CURLOPT_URL, $url);
    
    // О отключаем проверку SSL сертификата:
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    
    // Устанавливаем заголовки для имитации браузера:
    
    $headers = [];
    $headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9';
    $headers[] = 'Accept-Encoding: identity';
    $headers[] = 'Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7';
    $headers[] = 'Cache-Control: no-cache';
    $headers[] = 'Connection: keep-alive';
    $headers[] = 'Host: ' . parse_url($url)['host'];
    $headers[] = 'Pragma: no-cache';
    $headers[] = 'Sec-Fetch-Dest: document';
    $headers[] = 'Sec-Fetch-Mode: navigate';
    $headers[] = 'Sec-Fetch-Site: none';
    $headers[] = 'Sec-Fetch-User: ?1';
    $headers[] = 'Upgrade-Insecure-Requests: 1';
    $headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36';
    
    
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    
    // Разрешаем переадресацию:
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    
    // Запрещаем прямяой вывод результата запроса:
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    
    // Делаем сам запрос:
    $result = curl_exec($curl);
    
    // Завершаем сеанс:
    curl_close($curl);
    
    // Смотрим результат:
    echo $result;


    Если метод не помогает, напишите ссылку на сайт, возможно подскажу что.
    Ответ написан
  • Как отключить картинку на заднем фоне сайта в браузере google chrome?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Можно конечно, используйте UserScrit для блокировки изображения.
    Ответ написан
    Комментировать
  • Как добавить в массив dataTransfer.files еще один файл?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Примерно так:
    var dt = new DataTransfer();
    dt.items.add(file1);
    dt.items.add(file2);
    dt.items.add(file3);
    console.dir(dt.files);
    Ответ написан
    Комментировать
  • Возможно ли создать массив FileList у пустого input[type=file]?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Лайфхак для создания коллекции файлов FileList:
    var info = 'Какой-нибудь текст';
    
    var dt  = new DataTransfer();
    dt.items.add(new File([info], 'primer.txt', {type: 'text/plain'}));
    var file_list = dt.files;
    
    console.log('Коллекция файлов создана:');
    console.dir(file_list);
    
    // Вставим созданную коллекцию в реальное поле:
    document.querySelector('input[type="file"]').files = file_list;

    В переменную info вместо текста, можно положить в том числе и Blob - это особенность функции new File() которая первым параметром может принять как массив из текстов, так и массив из Blob.

    Фактически лайфхак выше позволяет нам JavaScript-ом скачать любой какой угодно файл со своего сайта и вставить его абсолютно в любое поле <input type="file"> - что просто архиполезно для браузерных ботов.

    Также способ выше можно применить для редактирования уже выбранных пользователем файлов. Например, если надо из поля выбора файлов убрать какие-то определенные файлы и при этом сделать не фиктивно, а реально.

    Огромное спасибо пользователю Mmx Symfony, который нарыл это решение где-то в недрах иностранных сайтов. Сам я, в свое время сколько не искал, везде был ответ, что это невозможно, а оказалось, что нихрена подобного =)
    Ответ написан
    Комментировать
  • Как создать коллекцию файлов FileList?

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Лайфхак для создания коллекции файлов FileList:
    // Создадим простой текстовый файл:
    var data = 'Здесь текст для файла или положите в переменную Blob';
    var file = new File([data], 'primer.txt', {type: 'text/plain'});
    
    // Создаем коллекцию файлов:
    var dt = new DataTransfer();
    dt.items.add(file);
    var file_list = dt.files;
    
    console.log('Коллекция файлов создана:');
    console.dir(file_list);
    
    // Вставим созданную коллекцию в реальное поле:
    document.querySelector('input[type="file"]').files = file_list;

    В переменную data вместо текста, можно положить в том числе и Blob - это особенность функции new File() которая первым параметром может принять как массив из текстов, так и массив из Blob.

    Фактически лайфхак выше позволяет нам JavaScript-ом скачать любой какой угодно файл со своего сайта и вставить его абсолютно в любое поле <input type="file"> - что просто архиполезно для браузерных ботов.

    Также способ выше можно применить для редактирования уже выбранных пользователем файлов. Например, если надо из поля выбора файлов убрать какие-то определенные файлы и при этом не фиктивно, а реально.

    Огромное спасибо пользователю Mmx Symfony, который нарыл это решение где-то в недрах иностранных сайтов. Сам я в свое время сколько не искал везде был ответ, что это невозможно, а оказалось, что нихрена подобного =)
    Ответ написан
    8 комментариев
  • Как сделать данный input?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Для определения состояния поля используйте псевдоклассы:

    :foucus
    :invalid
    :valid


    Для установки иконок внутри поля справа, используйте абсолютное позиционирование на сами иконки и селекторы соседей, чтобы выводить те или иные иконки с опорой на состояние полей.
    Ответ написан
    Комментировать
  • Можно ли запустить виртуальную машину Windows 10 на хосте Ubuntu Server?

    zkrvndm
    @zkrvndm
    Архитектор решений
    В теории на вашем линуксе можно рядом выделить раздел и залить туда установщик пиратской винды, а дальше немного пошаманить над Grub чтобы он запускал именно эту Винду. Дальше загружайтесь в эту саму Винду и спокойно устанавливайте его.

    Таким образом можно получить VDS с Windows по цене VDS с Linux. Но это конечно просто предположение, на практике не проверял никогда.
    Ответ написан
    Комментировать
  • Как обойти CloudFlare для bs4?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Парсите в реальном браузере + подключите антикача сервис какой-нибудь.
    Ответ написан
    4 комментария
  • Как создать автокликер для определенного фрагмента сайта?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Обычно такое делают при помощи UserScript или вешают задачу на сервере, но если нет навыков программирования, можете попробовать составить кликер на зеннопостер.
    Ответ написан
    Комментировать
  • Как с помощью iframe тег сделать зеркало сайта?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Используйте CSS-стили, чтобы растянуть iframe на всю высоту и ширину окна браузера.
    Ответ написан
    Комментировать
  • Можно ли передать дескриптор CURL другому скрипту (процессу)?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Если другой скрипт подключить через include / require то наверное можно.
    Ответ написан
    Комментировать
  • Как обойти блокировку парсера?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Когда вы делайте первый запрос сайт ставит вам куки. Если при дальнейших ваших запросах вы не будете возвращать ранее установленные куки, то разумеется вас будут банить как бота и будут правы.
    5fbe2c8f8e57f037280472.png
    Ответ написан
    Комментировать
  • Как программно загрузить файл в поле?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Комментировать
  • Что больше всего исползуется в браузере cookie, webStorage или indexedDB?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Предпочитаю использовать IndexedDB.

    Только для работы с ней использую специальную библиотеку, которая упрощает ввод и вывод:
    <script src="https://cdnjs.cloudflare.com/ajax/libs/localforage/1.9.0/localforage.js"></script>

    Далее, чтобы сохранить какие-то данные достаточно выполнить в консоли браузера:
    result = await localforage.setItem('key', save_data);
    console.log('Данные успешно сохранены:');
    console.dir(result);

    Где в save_data лежат сохраняемые данные, а key это ключ по которому можно было бы получить к ним доступ.

    Из особенностей, в save_data мы можем положить любой тип данных - хоть строку, хоть массив, хоть объект. Да даже файл при желании можно сохранить! При этом нет ограничений по объему хранимых данных, можете хоть сто мегабайт положить, хоть триста запихнуть.

    Чтобы потом извлечь сохраненные данные выполняем:
    result = await localforage.getItem('key');
    console.log('Данные успешно извлечены:');
    console.dir(result);

    Срок хранения данных - неограниченно. Или пока пользователь вручную не обнулит кеш браузера.
    Ответ написан
  • Как выполнить такое действие на php?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Однажды я задавал похожий вопрос. Посмотрите ответы, возможно они вам помогут:
    Существуют ли эмуляторы JavaScript на PHP?
    Ответ написан
    Комментировать