JS::Rank::MOZ

Парсер JS::Rank::MOZ 1.0.2

Доступно владельцам лицензии
  • Автор темы Автор темы Support
  • Дата начала Дата начала

Support

Administrator
Команда форума
A-Parser Enterprise
Пользователь Support разместил новый ресурс:

JS::Rank::MOZ - Авторизация и парсинг MOZ.com

  • Пример авторизации и парсинга с помощью JS-парсера
  • Используем мьютекс для авторизации в один поток
  • Затем передаем сессию для всех потоков используя внешнюю переменную
  • Разбираем JSON встроенными средствами

Узнать больше об этом ресурсе...
 
65cdn.png

Результат:
Код:
a.com - DA: 65; PA: 71; Spam Score: -
y.com - DA: 42; PA: 51; Spam Score: -
k.com - DA: 36; PA: 44; Spam Score: -
aa.com - DA: 90; PA: 73; Spam Score: -
z.com - DA: 49; PA: 57; Spam Score: -
v.com - DA: 34; PA: 42; Spam Score: -
l.com - DA: 42; PA: 51; Spam Score: -
ab.com - DA: 57; PA: 64; Spam Score: 1
ae.com - DA: 78; PA: 63; Spam Score: -

Код парсера
Код:
let session;

class Parser {
    constructor() {
        this.defaultConf = {
            results: {
                flat: [
                    ['da', 'Domain Authority'],
                    ['pa', 'Page Authority'],
                    ['ss', 'Spam Score'],
                ]
            },
            results_format: '$query - DA: $da; PA: $pa; Spam Score: $ss\\n',
            parsecodes: {
                200: 1,
            },
            max_size: 200 * 1024,
            login: '[email protected]',
            password: 'qqq111',
        };
    }

    *parse(set, results) {
        yield this.mutex.lock();
        if(!session) { //get session in one thread to share it for all
            let response = yield this.request('POST', 'https://moz.com/login', {
                'data[User][login_email]': this.conf.login,
                'data[User][password]': this.conf.password,
            });

            if(response.success && response.data.match(/<title>Home - Moz/)) {
                //login ok
            }
            else {
                this.logger.put('Invalid account');
                results.success = 0;
                yield this.mutex.unlock();
                return results;
            };
            session = this.cookies.getAll();
        };
        yield this.mutex.unlock();

        this.cookies.setAll(session);

        let response = yield this.request('GET', 'https://moz.com/researchtools/ose/api/comparisons', {
            site: set.query
        });


        if(response.success) {
            let json = JSON.parse(response.data);
            results.da = json.data.root_domain[0].domain_authority ? Math.round(json.data.root_domain[0].domain_authority) : '-';
            results.pa = json.data.page[0].page_authority ? Math.round(json.data.page[0].page_authority) : '-';
            results.ss = json.data.subdomain[0].spam_score || '-';
        }

        results.success = response.success;

        return results;
    }
}
  • Используем мьютекс для авторизации в один поток
  • Затем передаем сессию для всех потоков используя внешнюю переменную
  • Разбираем JSON встроенными средствами
 
Здравствуйте!
Затем передаем сессию для всех потоков используя внешнюю переменную

Где в коде передача параметров сессии для всех потоков?

У меня все потоки отсылают POST на https://moz.com/login
а без определения переменной session до
if(!session)
выскакивает ошибка
JavaScript error: ReferenceError: session is not defined at Parser.parse (files/parsers/Rank-MOZ.js:25:13)

ошибка исчезает если до if вписать var session; или let session;
 
Здравствуйте!

1. При запуске JS::Rank::MOZ постоянно выскакивает ошибка:

JavaScript error: ReferenceError: session is not defined at Parser.parse (files/parsers/Rank-MOZ/Rank-MOZ.js:24:13) at next (native) at parser-object.js:28:12

2. В описании написано "Затем передаем сессию для всех потоков используя внешнюю переменную"
Через какую переменную передается сессия?
 
Сессия хранится в переменной session, которая объявляется перед конструктором.
В пресете по ошибке данная переменная не объявлялась (исправлено), но в коде во втором посте данное объявление есть.
 
И сколько сайтов за раз можно проверять на один аккаунт, чтобы не забанили?
 
У кого-то работает данный парсер? Что-то мне по тесту 403 отдает от moz.com/login :(:(:(
 
Здравствуйте. Проблема подтвердилась. При возможности будет исправлено.
 
Назад
Верх