понедельник, 29 августа 2016 г.

Автоответчик для авито. Avito Talker | от devorigin.ru


     Страница программы на оф. сайте https://devorigin.ru/avito_monster_sender
 
    Устали проверять и отвечать на сообщения с авито? Или вы заняты чем-то другим и вам некогда?
     Есть отличное решение - автоответчик для сайта avito.ru. Он за вас узнает у клиента почту для связи или любую другую информацию, которую вы захотите, а вы в это время будете заниматься чем пожелаете. Универсальное решение для тех, кто очень плотно работает с данным сайтом и хочет максимально упростить рутинную работу.
     Вы сможете сами задавать сообщения для автоответа, работать с множеством аккаунтов через прокси + вы сможете выгружать отчет по новым сообщениям: кто ответил, что ответил, на какое объявление, с какого аккаунта и в какое время.

UPD 16.09.2016: Программа совмещена с avito monster sender. Подробнее ТУТ
       

воскресенье, 28 августа 2016 г.

Разгадывание reCaptcha с помощью java, phantomjs, jsoup и сервиса rucaptcha

     Есть 2 способа разгадывания recaptcha v2 (выбор картинок по параметрам): когда есть кнопка submit (например, при авторизации на сайте) и когда она отсутствует (при постинге на стене vk). Рассмотрим сначала первый и более простой вариант с кнопкой

     1. С наглядными и подробными пояснениями можно ознакомиться на оф. сайте рукапчи КЛАЦ. Я же объясню, как это сделать с помощью java
      Импортируем библиотеки phantomjs, jsoup и commons-lang
<dependency>
    <groupId>com.codeborne</groupId>
    <artifactId>phantomjsdriver</artifactId>
    <version>1.3.0</version>
</dependency>
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.7.2</version>
 </dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
 </dependency>
Как настроить phantomjs я уже писал ТУТ.

        //1. Получаем data-sitekey
String sitekey = Jsoup.parse(driver.getPageSource()).select(".g-recaptcha").attr("data-sitekey");

        //2. Получаем id капчи от сервиса рукапчи
            document = Jsoup.connect("http://rucaptcha.com/in.php?key=КЛЮЧ СЕРВИСА РУКАПЧИ&method=userrecaptcha&pageurl=домен сайта на котором вылезла капча&googlekey="+sitekey).get();
        String captchaId = StringUtils.substringAfter(document.text(), "OK|");

        //3. Ждем разгаданную капчу от сервиса рукапчи, делая запрос каждые 5 секунд
       String documentText;
        do {
            Thread.sleep(5000);
            document = Jsoup.connect("http://rucaptcha.com/res.php?key=КЛЮЧ СЕРВИСА РУКАПЧИ&action=get&id="+captchaId).get();
            documentText = document.text();
        } while (!documentText.contains("OK"));
        String captchaResponse = StringUtils.substringAfter(documentText, "OK|");

        //4. Делаем элемент g-recaptcha-response видимым
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("document.getElementById('g-recaptcha-response').setAttribute('style', '')");

        //5. Вводим ответ от сервиса в текстовое поле, которое сделали видимым в предыдущем пункте
        driver.findElement(By.id("g-recaptcha-response")).sendKeys(captchaResponse);

        //6. Нажимаем кнопку отправки формы
        driver.findElement(By.id("submit button id")).click();

     На этом первый способ разгадывания завершен.  При втором способе, придется нажимать на картинки.

     2. Рассмотрим второй способ разгадывания капчи
     Для этого необходимо скачать и подключить jar библиотеку для взаимодействия с api rucaptcha.com ТУТ
     Теперь, если нам попалась капча, делаем следующее:
        //Переключаемся на фрейм с капчей и жмем кнопку "я не робот"
        driver.switchTo().frame("undefined");
        driver.findElementByClassName("recaptcha-checkbox-checkmark").click();

        //После чего отключаемся от этого фрейма и подключаемся к фрейму с картинкой
        driver.switchTo().defaultContent();
        WebElement elementByXPath = driver.findElementByXPath("//iframe[contains(@title,'проверка recaptcha')]");
        driver.switchTo().frame(elementByXPath);
     
        //Получаем текст инструкции, url картинки и список квадратов на которые она разбита
        String src = driver.findElementByXPath("//img[contains(@class,'rc-image-tile-')]").getAttribute("src");
        Document parse = Jsoup.parse(driver.getPageSource());
        String instruction= parse.select(".rc-imageselect-desc-no-canonical").first().text();
        List<WebElement> elements = driver.findElementByXPath("//table[contains(@class,'rc-imageselect-table-')]").findElements(By.className("rc-image-tile-wrapper"));

        //сохраняем капчу локально
        File file = new File("captcha.jpg");
        URL url = new URL(src);
        FileUtils.copyURLToFile(url, file);

        // Определяем размерность сетки (может, размерностей больше, но  пока я встречал              только  три типа)
        int columns;
        int rows;
        if (elements.size()==8){
            rows = 4;
            columns = 2;
        } else if (elements.size()==9){
            rows = 3;
            columns = 3;
        } else {
            rows = 4;
            columns = 4;
        }
   
        //Ждем индексы картинок, по которым нужно кликнуть
        RuCaptcha.API_KEY = "КЛЮЧ СЕРВИСА";
        String captchaID = RuCaptcha.postReCaptcha2(file, instruction, 1, columns, rows);
        captchaID = StringUtils.substringAfter(captchaID, "OK|");
        String resp;
        do {
            Thread.sleep(5000);
            resp = RuCaptcha.getDecryption(captchaID);
        } while (!resp.contains("OK"));
        String indicesStr = StringUtils.substringAfter(resp, "OK|");
        String[] indicesArr = indicesStr.split(":")[1].split("/");

        //кликаем по полученным индексам, после каждого клика выжидая небольшую паузу
        for (String strSquareInd : indicesArr) {
            int intSquareInd = Integer.parseInt(strSquareInd );
             elements = driver.findElementByXPath("//table[contains(@class,'rc-imageselect-table-')]").findElements(By.className("rc-image-tile-wrapper"));
            elements.get(intSquareInd -1).click();
            Thread.sleep(1000);
        }

        // Жмем кнопку подтвердить, после чего наш пост спокойно добавляется в группу vk
        driver.findElementById("recaptcha-verify-button").click();

суббота, 27 августа 2016 г.

Phantomjs with proxy and user agent using java

        

How to implement phantomjs using java

Download library for windows from the official site http://phantomjs.org/download.html
Phantomjs maven repo https://mvnrepository.com/artifact/com.codeborne/phantomjsdriver
Extract phantomjs.exe to the current working directory

public static Capabilities getCapabilities() {
        DesiredCapabilities cap = new DesiredCapabilities();
        String proxy = "--proxy=ip:port;"; //if you need proxy
        String auth = "--proxy-auth=login:pass"; //if you need proxy
        String type = "--proxy-type=http"; //if you need proxy
        String[] phantomArgs = new String[]{
                "--webdriver-loglevel=NONE",
                proxy, auth, type

        };
        String fileName = "phantomjs.exe";
        cap.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, phantomArgs);
     cap.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, fileName);
cap.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "userAgent",  "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0");
        return cap;
    }

PhantomJSDriver driver = new PhantomJSDriver(getCapabilities());

That's all

четверг, 25 августа 2016 г.

OKBot - программа для рассылки на одноклассниках | от devorigin.ru


Программа для рассылки по комментариям к видео, темам и загрузка фото с описаниями в альбомы. Фотографии, видео и темы активно обсуждаются, комментируются и показываются в новостной ленте. Использование программы - это отличный способ привлечения трафика. Выбирайте активные группы сами или используйте встроенный парсер групп.

  Страница программы на оф. сайте https://devorigin.ru/okbot

     Функционал OKBot. Рассылка и продвижение в одноклассниках

— Рассылка по пользователям
— Гулялка по пользователям
— Рассылка по группам:
     - Рассылка по фотоальбомам групп с добавлением описания 
     - Рассылка по фотоальбомам групп по списку с добавлением описания 
     - Рассылка комментариев к видео групп 
     - Рассылка комментариев к видео групп по списку 
     - Рассылка по темам групп
— Автоответчик на входящие сообщения
— Прикрепление изображений к сообщениям и комментариям 
— Парсер групп из поиска
— Парсер пользователей из поиска
— Поддержка прокси, юзер агентов 
— Поддержка рандомизации текста 
— При работе в любом режиме бот вступает в группы (кроме парсера и рассылки комментариев и фото по заданным спискам видео и альбомов) 
— Создание отчета о работе


Парсер пользователей из поиска


Парсер групп из поиска


Рассылка сообщений в одноклассниках


Автоответчик для одноклассников


Гулялка/бродилка в одноклассниках


Рассылка по темам групп в одноклассниках



Рассылка по альбомам групп в одноклассниках



Рассылка по видеозаписям групп в одноклассниках




Рассылка сообщений на авито программой Avito Monster Sender | от devorigin.ru


     Страница программы на оф. сайте https://devorigin.ru/avito_monster_sender

Вашему вниманию представляется программа для рассылки в личные сообщения сайта avito.ru. Программа многопоточная, работает с сервисами распознавания капчи, поддерживает работу через прокси, исключает дубликаты. После быстрой и легкой настройки, вы можете указать нужную категорию объявлений, по которой будет производиться рассылка и запустить программу.
     Например:
     1. Вы занимаетесь строительными работами.
         Выбираете категорию "квартир" и тип объявлений "куплю" для вашего региона. Людям, которые покупают квартиру, скорее всего, понадобится ремонт, от косметического до капитального, вот тут вы и можете пойти на опережение, прорекламировав свой сайт по ремонту, либо себя, как мастера.
     2. У вас есть автосервис, либо вы занимаетесь ремонтом авто.
       Схема такая же, как и для квартир, только категория "автомобили".
     3. Вы предоставляете юридические услуги.
       Вам идеально подойдет рассылка для людей, которые продают/покупают жилье, продают автомобили или другой дорогой товар, в оформлении купли-продажи, страхования которого требуется помощь специалиста
     4. Вы владелец сток-магазина.
      С помощью данной программы вы с легкостью сможете направлять к себе людей, продающих б/у вещи, для дальнейшей их перепродажи.
     5. Вы в поисках работы.
       Обратите на себя внимание максимальное число работодателей, занимаясь в это время своими делами.


Функционал Avito Monster Sender + Avito Talker. Рассылка и автоответчик авито
— Многопоточная рассылка в личные сообщения по заданному фильтру (категории)
— Парсер объявлений и вакансий 
— Чекер аккаунтов (проверка валидности, верный ли пароль и не находится ли аккаунт в бане)
— Отправка тестовых сообщений в момент работы для проверки доставляемости 
— Многопоточные автоответы на личные сообщения в двух режимах 
— Добавление картинки к автоответу
— Поддержка шаблонов для автоматической подстановки имени отправителя и имени автора объявления при рассылке и автоответах 
— Поддержка шаблона для автоматической подстановки цены товара или услуги из объявления в сообщение
— Поддержка шаблона для переноса строк
— Выгрузка непрочитанных диалогов в текстовый файл 
— Поддержка прокси, юзер агентов 
— Учет дубликатов (в одно и то же объявление или тому же автору сообщение отправлено не будет)
— Поддержка рандомизации текста 
— Создание отчета о работе