Задать вопрос
KorP
@KorP
Кратко о себе

Как авторизоваться на novafilm.tv при помощи cURL?

Что то я тут затупил на тему передаваемых данных.

Если на других трекерах достаточно постом передать лог/пасс и нажатие на кнопку

curl_setopt($ch, CURLOPT_POSTFIELDS, «FormLogin={$log}&FormPassword={$pass}&act=login»);

и всё работает, то тут я так понимаю всё передаётся в заголовках, но судя по логам помимо log, pass ещё куча каких то данных передаётся:

-----------------------------14042802788933518161505795335

Content-Disposition: form-data; name=\«return\»


/

-----------------------------14042802788933518161505795335

Content-Disposition: form-data; name=\«username\»


{$log}

-----------------------------14042802788933518161505795335

Content-Disposition: form-data; name=\«password\»


{$pass}

-----------------------------14042802788933518161505795335

Content-Disposition: form-data; name=\«login\»


???????? ??????????!

-----------------------------14042802788933518161505795335--

что то вообще такое? Попробовал в таком виде заголовок отправить — сервер ничего не возвращает, если не слать — вываливается форма авторизации соответственно. Может кто уже писал авторизацию под нову и подскажет или просто умную мысль подкинет?
  • Вопрос задан
  • 3385 просмотров
Подписаться 4 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 3
hayk
@hayk
«multipart/form-data» тут не причем.
Ответ написан
Riateche
@Riateche
Вот рабочий код (только логин и пароль правильный поставьте):

<?php

$login = "qwerty";
$password = "qwerty";

$ch = curl_init("http://novafilm.tv/auth/login");

$postData = array(
  "return"=>"",
  "username"=>$login,
  "password"=>$password,
  "forget"=>0,
  "login"=>"Хочу войти!",
);

curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData );

$headers = explode("\r\n", curl_exec($ch));
curl_close($ch);

if (in_array("Location: /", $headers)) 
  print "Success!\n";
else print "Fail!\n";
</code>
Ответ написан
ParaPilot
@ParaPilot
Вот рабочий код
var answer
$.ajax({
    url:'http://novafilm.tv/auth/login',
    type: 'post',
    data:{
        username: 'ИМЯ',
        password: 'ПАРОЛЬ',
        login:'Хочу войти!',
        return: '',
        forget: 0     
        },
    success:function(result)
    {
        answer = result;
    },
    error:function(){
        alert('Something wrong');
    }
});

или на чистой java
var handlerPath = 'xmlhttp.php';
	 
	function createRequest() {
	    // Создание объекта XMLHttpRequest отличается для Internet Explorer и других обозревателей, поэтому для совместимости эту операцию приходиться дублировать разными способами
	    if (window.XMLHttpRequest) req = new XMLHttpRequest();      // normal browser
	    else if (window.ActiveXObject) {                            // IE
	        try {
	            req = new ActiveXObject('Msxml2.XMLHTTP');          // IE разных версий
	        } catch (e){}                                           // может создавать
	        try {                                                   // объект по разному
	            req = new ActiveXObject('Microsoft.XMLHTTP');
	        } catch (e){}
	    }
	    return req;
	}
	 
	function getData(handlerPath, parameters) {
	    // Создаем запрос
	    req = createRequest();
	    if (req) {
	        // Отправляем запрос методом POST с обязательным указанием файла обработчика (true - асинхронный режим включен)
	        req.open("POST", handlerPath, false);
	        // При использовании объекта XMLHttpRequest с методом POST требуется дополнительно отправлять header
	        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	        // Передаем необходимые параметры (несколько параметров разделяются амперсандами)
	        req.send(parameters);
	 
	        // Для статуса "OK"
	        if (req.status == 200) {
	            // Получаем ответ функции в виде строки
	            var rData = req.responseText;
	            // Проверяем данные с помощью регулярных выражений, после выполняем функцию eval()
	            var eData = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(rData.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + rData + ')');
	            // Создаем массив данных
	            var eArray = new Object(eData);
	        } else {
	            alert("Не удалось получить данные:\n" + req.statusText);
	        }
	    } else {
	        alert("Браузер не поддерживает AJAX");
	    }
	    return eArray;
	}
	 

	 
	// вызов функции AJAX запроса
	getData(handlerPath,'username=USERNAME&password=PASSWORD&login=%D0%A5%D0%BE%D1%87%D1%83+%D0%B2%D0%BE%D0%B9%D1%82%D0%B8!&return=&forget=0');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы