Alexanderod
Создатель
- Регистрация
- 15 Янв 2009
- Сообщения
- 49
- Реакции
- 11
- Автор темы
- #1
Пытаюсь авторизироваться курлом на сайте.
Постом отправляю все переменные(считываю хттпхедером), отправляю все заголовки в хедерсах, реферры, куки, а авторизация не происходит и хоть ты тресни.
Дело возможно в том, что сайт использует скрипты вида:
Я я так понимаю они меня и выбрасывают.
В ответ от сервера я получаю:
< HTTP/1.1 200 OK
< Date: Sat, 20 Nov 2010 02:43:05 GMT
< Server: Apache/2.0.63 (Win32) PHP/5.2.10
< X-Powered-By: PHP/5.2.10
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=windows-1251
<
* Connection #0 to host ***** left intact
* Closing connection #0
Как авторизироваться, есть идеи?
PHP:
function get_page1($url,$headers,$post)
{
$process = curl_init($url);
$fp1 = fopen("result2.txt", "w");
$fp2 = fopen("header2.txt", "w");
$fp3 = fopen("errors2.txt", "w");
curl_setopt($process, CURLOPT_REFERER, 'http://site.ua/'); // Задает значение HTTP заголовка "Referer: ".
curl_setopt($process, CURLOPT_VERBOSE, 1); // При установке этого параметра в ненулевое значение cURL будет выводить подробные сообщения о всех производимых действиях.
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); //При установке этого параметра в ненулевое значение CURL будет возвращать результат, а не выводить его.
curl_setopt($process, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 3.5.30729)');
curl_setopt($process, CURLOPT_COOKIEFILE, 'cookie1.txt');
curl_setopt($process, CURLOPT_COOKIEJAR, 'cookie1.txt');
curl_setopt($process, CURLOPT_POST, 1); // При установке этого параметра в ненулевое значение будет отправлен HTTP запрос методом POST типа application/x-www-form-urlencoded, используемый браузерами при отправке форм.
curl_setopt($process, CURLOPT_POSTFIELDS, join('&', $post)); //Строка, содержащая данные для HTTP POST запроса.
curl_setopt($process, CURLOPT_HEADER, 1);// При установке этого параметра в ненулевое значение результат будет включать полученные заголовки.
curl_setopt($process, CURLOPT_FOLLOWLOCATION, 0); //ри установке этого параметра в ненулевое значение, при получении HTTP заголовка "Location: " будет происходить перенаправление на указанный этим заголовком URL (это действие выполняется рекурсивно, для каждого полученного заголовка "Location:").
curl_setopt($process, CURLOPT_NOBODY, 0);//При установке этого параметра в ненулевое значение результат не будет включать документ (например, вам нужно получить только заголовки
curl_setopt($process, CURLOPT_HTTPHEADER, $headers);//CURLOPT_HTTPHEADER: Массив с HTTP заголовками.
curl_setopt($process, CURLOPT_WRITEHEADER, $fp2); //Файл, в который будут выведены полученные заголовки.
curl_setopt($process, CURLOPT_STDERR, $fp3); //Файл, в который будут выводиться сообщения об ошибках. По умолчанию STDERR.
$return = curl_exec($process);
curl_close($process);
return $return;
}
Дело возможно в том, что сайт использует скрипты вида:
PHP:
<script type="text/javascript">
function auth(){document.getElementById('auth').innerHTML=' ';}
</script><head>
<base href="http://adress" />
<!--[if lte IE 6]>
<script type="text/javascript" src="supersleight.js"></script>
<![endif]-->
function doLoad(p,prod) {
prod=(prod!= undefined)?prod:1;
//alert(p+' '+prod);
req=false;
try { // определить метод поддержки
req=new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try {
req=new ActiveXObject('Microsoft.XMLHTTP'); // сработает в Internet Explorer
} catch (e) {
if(window.XMLHttpRequest){ // сработает в Mozilla и Safari
req=new XMLHttpRequest();
}
}
}
if (req){// если какой-то из вариантов поддерживается
var params = 'prod=';
if(prod==1){ params = 'prod='+p;pglob2=1}
else { params = 'pag='+p;}
pglob=p;
req.onreadystatechange = readystate; // назначим обработчик событию объекта
req.open("POST", 'ajax-pags.php', true); // задать параметры методу open
req.setRequestHeader("Accept-Language", "ru, en");
req.setRequestHeader("Accept-Charset", "windows-1251;q=1");
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("Content-length", params.length);
req.setRequestHeader("Connection", "close");
req.send(params); // отправить запрос
}
}
function readystate() {
if (req.readyState != 4) {document.getElementById('loading').innerHTML ='<img src="img/loading.gif" />';}
if (req.readyState == 4){// если запрос завершен
if (req.status == 200) { // если он завершен без ошибок
document.getElementById('maintext').innerHTML =''+req.responseText+'';
document.getElementById('loading').innerHTML =' ';
active_menu();
if(pglob2==1){color(pglob); }
//alert(pglob);
} else {
alert("Произошла ошибка "+ req.status+":\n" + req.statusText);
}
}
}
fin_inf=0;
function pag_load(t) {
if(t=='fin')fin_inf=1;
//alert(p+' '+prod);
req1=false;
try { // определить метод поддержки
req1=new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try {
req1=new ActiveXObject('Microsoft.XMLHTTP'); // сработает в Internet Explorer
} catch (e) {
if(window.XMLHttpRequest){ // сработает в Mozilla и Safari
req1=new XMLHttpRequest();
}
}
}
if (req1){// если какой-то из вариантов поддерживается
params = 'pag=';
req1.onreadystatechange = readystate1; // назначим обработчик событию объекта
req1.open("POST", t+'.php', true); // задать параметры методу open
req1.setRequestHeader("Accept-Language", "ru, en");
req1.setRequestHeader("Accept-Charset", "windows-1251;q=1");
req1.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req1.setRequestHeader("Content-length", params.length);
req1.setRequestHeader("Connection", "close");
req1.send(params); // отправить запрос
}
}
function readystate1() {
if (req1.readyState != 4) {document.getElementById('loading').innerHTML ='<img src="img/loading.gif" />';}
if (req1.readyState == 4){// если запрос завершен
if (req1.status == 200) { // если он завершен без ошибок
document.getElementById('maintext').innerHTML =''+req1.responseText+'';
document.getElementById('loading').innerHTML =' ';
active_menu();
if(fin_inf==1){
document.getElementById('dolg1').innerHTML=document.getElementById('dolg2').innerHTML;
document.getElementById('prosr1').innerHTML=document.getElementById('prosr2').innerHTML;
fin_inf=0;
}
//alert(pglob);
} else {
alert("Произошла ошибка "+ req1.status+":\n" + req1.statusText);
}
}
}
В ответ от сервера я получаю:
< HTTP/1.1 200 OK
< Date: Sat, 20 Nov 2010 02:43:05 GMT
< Server: Apache/2.0.63 (Win32) PHP/5.2.10
< X-Powered-By: PHP/5.2.10
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=windows-1251
<
* Connection #0 to host ***** left intact
* Closing connection #0
Как авторизироваться, есть идеи?