Сведения о вопросе

LARVION

23:33, 2nd October, 2020

Теги

PHP    

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

Просмотров: 316   Ответов: 3

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

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

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--

что то вообще такое? Попробовал в таком виде заголовок отправить — сервер ничего не возвращает, если не слать — вываливается форма авторизации соответственно. Может кто уже писал авторизацию под нову и подскажет или просто умную мысль подкинет?



  Сведения об ответе

fo_I_K

21:41, 29th September, 2020

«multipart/form-data» тут не причем.


  Сведения об ответе

Chhiki

08:44, 27th September, 2020

Вот рабочий код (только логин и пароль правильный поставьте):

<?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>


  Сведения об ответе

nYU

08:38, 25th September, 2020

Вот рабочий код
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');


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться