Как вытащить капчу со страницы и отдать ее антигейт?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by fedor_ka, 9 Nov 2015.

  1. fedor_ka

    fedor_ka New Member

    Joined:
    12 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Скажите, на сколько реально вытащить капчу со страницы браузера, передать ее в антигейт?
    Для этого нужен какой-то скрипт + апиай антигейта? И сразу вопрос, сколько такое чудо может стоить? Образно задача простая: есть ИЕ11, в котором открываются сами страницы сайта, на которых есть капча, и вводятся руками, а надо както их вытаскивать и отдавать на антигейт.
    Спасибо.
     
  2. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Сначала нужно сохранить саму картинку капчи.
    А как ее отправить, может почитать на самом антигейте, там есть все необходимое :) почитай внимательно.
     
  3. fedor_ka

    fedor_ka New Member

    Joined:
    12 Nov 2012
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Читаю, все равно не могу себе это сложить. Может быть есть реализации, платные или нет. Любые. Или куда можно обратиться хотя бы подскажите.
     
  4. AntiduPb

    AntiduPb Member

    Joined:
    27 Apr 2013
    Messages:
    95
    Likes Received:
    90
    Reputations:
    0
    CURL?
     
  5. blackbox

    blackbox Elder - Старейшина

    Joined:
    31 Dec 2011
    Messages:
    362
    Likes Received:
    62
    Reputations:
    11
    На сайте антикаптчи есть примеры на разных языках. http://antigate.com/?action=api здесь в разделе "примеры и библиотеки". Выглядит это так - на нужно языке программирования пишется программа, которая загружает страницу, получает на ней изображение с капчей, шлет ее на антигей, потом уже используется разгаданное слово (вставляется в поле на сайте и отправляется в форме). Можно в раздел фриланса обратиться, там за небольшую плату сделают все.
     
  6. jxios

    jxios New Member

    Joined:
    20 Nov 2015
    Messages:
    15
    Likes Received:
    4
    Reputations:
    0
    на qtwebkit
    http://qt.io - скачиваешь qtcreator и пишешь на с++ qt фреймворке.

    http://stackoverflow.com/questions/10335780/how-to-get-pictures-from-qwebview

    потом делаешь программно скриншот экрана,
    и вырезаешь изображение с капчей,
    и уже отправляешь на anti-captcha.com

    но я делал это, и там получается не выгодно, на 1 страницу вконтакте, чтобы раскрутить её до 1000 друзей ушло на anti-captcha.com 2$. А эти 1000 друзей ни во что не сможешь сконвертировать.
     
  7. cyberposting

    cyberposting New Member

    Joined:
    14 Nov 2015
    Messages:
    19
    Likes Received:
    3
    Reputations:
    0
    Слегка абстрактный код, выдранный из рабочего скрипта для rucaptcha на node js, но принцип, думаю понятен.

    //обертка над http.request
    request = function(host, port, path, cookie, post, callback) {
    var data = {
    header: '',
    content: '',
    error: ''​
    };​

    var options = {
    host: host,
    port: port,
    path: path,
    headers: {
    Host: host,
    cookie: cookie,
    'user-agent': 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:37.0) Gecko/20100101 Firefox/37.0'​
    }​
    };

    var request = http.request(this.options, function(response) {
    response.setEncoding('binary');
    data['header'] = response.headers;​

    response.on('data', function(chunk) {
    data['content'] += chunk;​
    });​

    response.on('end', function() {
    callback(data);​
    });​
    });

    request.end();​
    };

    //получаем captcha
    request('captcha_host.com', null, '/captcha_url', null, null, function(data) {
    var captcha = new Buffer(data['content'], 'binary').toString('base64');

    //загружаем на rucaptcha
    var post = {
    method: 'base64',
    key: 'your rucaptcha key',
    body: captcha​
    };

    request('rucaptcha.com', null, '/in.php', null, post, function(data) {
    var expr = new RegExp('OK\\|(\\d+)');
    var res = expr.exec(data['content']);
    var id = res[1];

    //функция получения результата
    var getCaptchaResult = function(id) {
    var event = new events.EventEmitter();
    request('rucaptcha.com', null, '/res.php?key=' + 'your rucaptcha key' + '&action=get&id=' + id, null, null, function(data) {
    var expr, res;​

    expr = new RegExp('OK\\|(\\S+)');
    res = expr.exec(data['content']);
    if(res) {
    console.log('captcha: check result: done');
    event.emit('done', res[1]);
    return;​
    }​

    if(data['content'] == 'CAPCHA_NOT_READY') {
    event.emit('notready', data);
    return;​
    }​

    console.log('captcha: check result: fail');
    event.emit('fail', data);
    return;​
    });​

    return event;​
    });

    //функция проверки результата
    var checkCaptchaResult = function(id) {
    var res = getCaptchaResult(id);
    var captcha_key = '';​

    res.on('done', function(data) {
    captcha_key = data;​
    });​

    res.on('notready', function(data) {
    checkCaptchaResult(id);​
    });​

    res.on('fail', function(data) {
    console.log('captcha: check result: fail');​
    });​
    };

    //запускаем рекурсивно
    checkCaptchaResult(id);​
    });​
    });