ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Как сделать регистрацию ICQ на php?
  #1  
Старый 23.08.2009, 15:38
Аватар для Linuxoid
Linuxoid
Участник форума
Регистрация: 13.02.2007
Сообщений: 205
Провел на форуме:
928552

Репутация: 55
Отправить сообщение для Linuxoid с помощью ICQ
По умолчанию Как сделать регистрацию ICQ на php?

В общем возникла необходимость сделать сдел. вещь: при регистрации на неком сайте скрипт автоматически регистрирует человека в аське. Зачем - это, по сути не важно.
Примерный принцип работы: скрипт передает на страницу регистрации аськи (icq.com) пароль, забирает от туда капчу и выдает ее пользователю. Пользователь вводит капчу, скрипт передает это значение обратно на сайт аськи и непосредственно отдает пользователю готовый номер.
Предположительно это делается с использованием курла (нет?).
Интересует вариант как это сделать... Особенно интересует как правильно забрать капчу, а потом передать введенное пользователем значение с нее на сайт icq.com.
Буду благодарен за любые советы.
 
Ответить с цитированием

  #2  
Старый 23.08.2009, 15:42
Аватар для SVAROG
SVAROG
Постоянный
Регистрация: 13.02.2007
Сообщений: 406
Провел на форуме:
2706059

Репутация: 206
По умолчанию

юзай курл, имхо легче будет
http://ru.php.net/manual/en/book.curl.php
 
Ответить с цитированием

  #3  
Старый 23.08.2009, 15:45
Аватар для Linuxoid
Linuxoid
Участник форума
Регистрация: 13.02.2007
Сообщений: 205
Провел на форуме:
928552

Репутация: 55
Отправить сообщение для Linuxoid с помощью ICQ
По умолчанию

Курл - это ясно. Как сперва сохранить капчу в тмп и выдать ее пользователю, а потом вернуть ответ, что бы там капча не изменилась? Просто сохраняю куки с этого сайта - не помогает, все равно картинка уже другая. Пример кода можно? Конкретно того куска, который забирает капчу и возвращает введенный результат.
 
Ответить с цитированием

  #4  
Старый 23.08.2009, 15:45
Аватар для SVAROG
SVAROG
Постоянный
Регистрация: 13.02.2007
Сообщений: 406
Провел на форуме:
2706059

Репутация: 206
По умолчанию

и что-то мне кажется там лимит стоит на регистрацию с одного ип, так что запасайся проксиками, ещё не проверял но по любому должен быть
 
Ответить с цитированием

  #5  
Старый 23.08.2009, 15:48
Аватар для SVAROG
SVAROG
Постоянный
Регистрация: 13.02.2007
Сообщений: 406
Провел на форуме:
2706059

Репутация: 206
По умолчанию

возми сниффер пакетв, и наблюдай, может там ещё параметры какие нибудь передаются,
вот у меня капча там появилась
https://www.icq.com/img/aa_img.php?gnm=1A512ADD39032F0B2BB0B6A7463BA4AE3B6 0B11CD19F481EB5BA751506DD7AABA8D85D1253F6DEC52E64A 92211A54D7D
и она не меняется, так что ты просто ссыль эту пользователю даёшь и все
 
Ответить с цитированием

  #6  
Старый 23.08.2009, 15:48
Аватар для e4key
e4key
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме:
71052

Репутация: 5
По умолчанию

При получении капчи нужно сохранить сессию, а затем отправить капчу с этой сессией. Вот я делал на питоне для free-uin.org:

Код:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import re
import time
import urllib
import urllib2
import httplib
import cookielib

def load_captcha():
    global cookies
    cookiejar = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
    image = opener.open('http://www.free-uin.org/r/img.php?regen=y').read()
    for i in cookiejar:
        cookies = 'PHPSESSID=' + i.value + ';SMFCookie988=a%3A4%3A%7Bi%3A0%3Bs%3A4%3A%227054%22%3Bi%3A1%3Bs%3A40%3A%22c06d8bdaaa9f9f459b37534288532ec5b36d8c51%22%3Bi%3A2%3Bi%3A1436452120%3Bi%3A3%3Bi%3A0%3B%7D'
    return image

def main():
    while True:
        image = load_captcha()
        key = 'key_here'
        results = open('uins.txt', 'w')
    
        cap_id = send_cap(key, image)
        if not cap_id:
            print 'Not send...'
            return
        
        status, text= get_cap_text(key, cap_id)
        if status == 'OK':
            data = urllib.urlencode({'code': text, 'btnI': ''})
            req = urllib2.Request('http://www.free-uin.org/r/mnlxswrt.php', data)
            req.add_header('Cookie', cookies)
            page = urllib2.urlopen(req).read()
            uin = re.findall('([0-9]+;[a-zA-Z0-9]+)\n', page)
            if len(uin) != 0:
                print 'Hehe: ' + uin[0]
                results.write(uin[0] + '\n')
                results.fluch()
            else:
                if len(re.findall('<br><br> <a', page)) != 0:
                    bad_url = 'http://anti-captcha.com/res.php'
                    bad_data = urllib.urlencode({'key': key, 'action': 'reportbad', 'id': cap_id})
                    bad = urllib.urlopen(bad_url, bad_data)
                    print 'Incorrect code!'
                else:
                    print 'Do not lucky ...'

def get_cap_text(key, cap_id):
	time.sleep(5)
	res_url = 'http://ac-service.info/res.php'
	res_url += "?" + urllib.urlencode({'key': key, 'action': 'get', 'id': cap_id})
	while 1:
		res = urllib.urlopen(res_url).read()
		if res == 'CAPCHA_NOT_READY':
			time.sleep(1)
			continue
		break
	
	res = res.split('|')
	if len(res) == 2:
		return tuple(res)
	else:
		return ('ERROR', res[0])

def send_cap(key, data):
	boundary = '----------OmNaOmNaOmNamo'
	body = '''--%s
Content-Disposition: form-data; name="method"

post
--%s
Content-Disposition: form-data; name="key"

%s
--%s
Content-Disposition: form-data; name="file"; filename="capcha.jpg"
Content-Type: image/pjpeg

%s
--%s--

''' % (boundary, boundary, key, boundary, data, boundary)
	headers = {'Content-type' : 'multipart/form-data; boundary=' + boundary}
	h = httplib.HTTPConnection('ac-service.info')
	h.request("POST", "/in.php", body, headers)
	resp = h.getresponse()
	data = resp.read()
	h.close()
	if resp.status == 200:
		cap_id = int(data.split('|')[1])
		return cap_id
	else:
		return False

if __name__ == '__main__':
    main()
 
Ответить с цитированием

  #7  
Старый 23.08.2009, 15:52
Аватар для SVAROG
SVAROG
Постоянный
Регистрация: 13.02.2007
Сообщений: 406
Провел на форуме:
2706059

Репутация: 206
По умолчанию

он же писал что сессии сохранял, так что скорее всего у него в коде ошибка
 
Ответить с цитированием

  #8  
Старый 23.08.2009, 15:54
Аватар для e4key
e4key
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме:
71052

Репутация: 5
По умолчанию

Цитата:
он же писал что сессии сохранял, так что скорее всего у него в коде ошибка
где?
 
Ответить с цитированием

  #9  
Старый 23.08.2009, 16:34
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

Вот писал когдато, но времени никак нету доделать по человечески, регает 3 или 5 асек за которткий промежуток времени, потом идет бан минут на 15-30 уже не помню точно.

icq.com.php
PHP код:
<?php
### SETTINGS
$url 'https://www.icq.com/register/index.php';
$pass '123123';
$ua 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5';
$email 'your@mail.ru';
$secret_answer 'your_answer';  #What is your pet's name
    
    
$ch curl_init($url);
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
curl_setopt($chCURLOPT_USERAGENT$ua);
curl_setopt($chCURLOPT_COOKIEJAR'./cook.txt');
curl_setopt($chCURLOPT_COOKIEFILE'./cook.txt');
#curl_setopt($ch, CURLOPT_REFERER, 'https://www.icq.com/register/');
curl_setopt($chCURLOPT_RETURNTRANSFER1);
$res curl_exec($ch);
    
    if(
preg_match('#name="icq_ln" value="(.*?)"#',$res,$matches))
    
    {
        
$icq_ln $matches[1];
        
        
        if(
preg_match('#name="gnm" value="(.*?)"#',$res,$matches))
        {
            
$gnm $matches[1];
            
            
            if(
preg_match('#gnm=(.*?)"#',$res,$matches))
        {
            
$captcha_link $matches[1];
            
            
$ch curl_init("https://www.icq.com/img/aa_img.php?gnm=$captcha_link");
            
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
            
curl_setopt($chCURLOPT_USERAGENT$ua);
            
curl_setopt($chCURLOPT_COOKIEJAR'./cook.txt');
            
curl_setopt($chCURLOPT_COOKIEFILE'./cook.txt');
            
curl_setopt($chCURLOPT_REFERER'https://www.icq.com/register/index.php');
            
curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
$res curl_exec($ch);
            
file_put_contents('cap.gif',$res);
            
$rand rand(0,999);
            
            echo 
"<img src=\"cap.gif?$rand\" />";
            
            echo 
'
            <form action="do.php" method="post" enctype="application/x-www-form-urlencoded">
            <input type="text" name="captcha" value=""><br />
            <input type="hidden" value="'
.$gnm.'" name="gnm" />
            <input type="hidden" value="'
.$icq_ln.'" name="icq_ln" />
            <input type="submit" value="REG" />
            
            </form>'
;
            
        }
            
            
            
            
            
            
            
            
        }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
?>
do.php
PHP код:
<?php
$url 
'https://www.icq.com/register/index.php';
$pass '123123';
$ua 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1) Gecko/20090624 Firefox/3.5';
$email 'mail@mail.ru';
$secret_answer 'answer';  #What is your pet's name
$nick 'nick';


if(!empty(
$_POST['captcha']))
{
$captcha $_POST['captcha'];
$gnm $_POST['gnm'];
$icq_ln $_POST['icq_ln'];

$post "service=30&lg_id=&qtype=&icq_ln=$icq_ln&nickname=$nick&fname=&lname=&email=$email&gender=0&age=13&password=$pass&password_confirm=$pass&qa1=What+is+your+pet%27s+name%3F&userq1=&answer1=$secret_answer&gnm=$gnm&word=$captcha&key=&lang=en";

$ch curl_init($url);
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);

curl_setopt($chCURLOPT_NOPROGRESS0);
curl_setopt($chCURLOPT_FOLLOWLOCATION1);



curl_setopt($chCURLOPT_USERAGENT$ua);
curl_setopt($chCURLOPT_COOKIEJAR'./cook.txt');
curl_setopt($chCURLOPT_COOKIEFILE'./cook.txt');
curl_setopt($chCURLOPT_REFERER'https://www.icq.com/register/index.php');
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS$post);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
$res curl_exec($ch);

if(
preg_match('#id="uin">([0-9]{9})\.#',$res,$matches))
{
    
file_put_contents('uins.txt',$matches[1]."\r\n",FILE_APPEND);
    
header("Location: icq.com.php");
}

if(
preg_match('#please try again later#',$res))
{
    echo 
'BAN';
}



    
}    
    
?>
Аськи будут записыватся в uins.txt
 
Ответить с цитированием

  #10  
Старый 23.08.2009, 16:38
Аватар для Linuxoid
Linuxoid
Участник форума
Регистрация: 13.02.2007
Сообщений: 205
Провел на форуме:
928552

Репутация: 55
Отправить сообщение для Linuxoid с помощью ICQ
По умолчанию

Так. Давайте не будем рассматривать конкретно сайт icq.com. Я не могу просто понять как работать с капчей. Как просто взять с одного сайта капчу курлом, передать пользователю и на основе введенного заполнить форму? Подобному Скрипту можно кучу применений придумать, для одновременной регистрации на куче сайтов.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ по выделенным серверам †Romi4† Авторские статьи 4 31.08.2009 16:19
Как настроить ICQ и e-mail на мобильнике novichok Схемы и программы 9 07.06.2006 22:50
Как сделать invisible icq? bobo ICQ 6 27.05.2006 00:11



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ