Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (14)

Лучшие ответы пользователя

Все ответы (17)
  • Как правильно подключаться к mongo?

    @antonecma
    Nodejs backender
    1. Один раз при старте приложения.
    2. Все методы нативного драйвера (пакет mongodb в npm) возвращают промис. Пишите await перед каждым методом.
    Ответ написан
    2 комментария
  • Как работают сайты, позволяющие запускать код в playground (исполнение на их сервере)?

    @antonecma
    Nodejs backender
    https://nodejs.org/api/vm.html и ограничение по времени исполнения
    Ответ написан
    Комментировать
  • Mongoose: как сохранить несколько документов одним запросом?

    @antonecma
    Nodejs backender
    У вас дублирование ключевого поля login_1. Измените каждый объект массива doc, добавив уникальное свойство login_1.

    let data = [
    {name: 'Mike', login_1: 'mikeLogin' },
    {name: 'Tom', login_1: 'tomLogin'}
    ];

    Или не используйте индексирование по login_1.
    Ответ написан
    Комментировать
  • Есть ли сервис proxy серверов для node.js?

    @antonecma
    Nodejs backender
    Три первых пункта мимо, т.к. никаких специальных прокси для ноды не существует. Проски не зависимый от платформы на которой вы разрабаиываете.
    4. https://github.com/request/request/blob/master/REA...
    5. https://github.com/chill117/proxy-lists
    6. Ничего не покупайте, посмотрите на пункт 5.

    //Для начала установите модуль request
    //npm i request --save
    /**
     * make get request through proxy
     * @param {string} url -   uri of resource
     * @param {object[]} proxyList - array of proxies
     * @param {string} proxyType='http' - type of proxy
     * @param {function} cb - callback
     */
    const testProxy = (url, proxyList, proxyType, cb) => {
        if(!(proxyList instanceof Array) && !(cb instanceof Function) && !url){
            throw new Error('testProxy() arguments not set');
        }
        proxyType = proxyType || 'http';
    
        const proxyIndex = parseInt(Math.random() * (proxyList.length - 1));
        const proxy = proxyList[proxyIndex];
        const proxyUrl = `${proxyType}://${proxy.ipAddress}:${proxy.port}`;
        
        const anyParam = {method : 'GET', proxy : proxyUrl, strictSSL: false};
        
        request(url, anyParam, (error, response, body) => {
            if(error){
                cb(error);
            } else {
                cb(null, response, body);
            }
        });
    };
    Ответ написан
    3 комментария
  • Чем осуществить парсер/граббер защищенного сайта?

    @antonecma
    Nodejs backender
    Общий концепт может быть таким :
    1. Использовать phantomjs, через локальный прокси.
    2. Локальный прокси обеспечивает сохранение всех запросов к требуемой странице в формате HAR.
    3. Поиск общих последовательностей запросов и кук, на основании нескольких HAR.
    4. Отделение кук и параметров устанавливаемых javascript.
    5. Поиск скриптов на странице, которые занимаются установкой значений указанных в п.4, с целью дальнейшего их исполнения в виртуальной машине javascript.
    На выходе имеем запросы которые необходимо выполнить, список очевидных заголовков, набор функций позволяющих при исполнении javascript, вычислить дополнительные заголовки. Теперь прогоняем весь этот набор через curl (или что то подобное) как и при обычном парсинга.
    Главная суть это виртуальная машина javascript и возможность найти то место(функцию) которую ей надо передать.
    Ответ написан
    Комментировать