Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Вход в личный кабинет другого сайта через php


Wyachik2

Recommended Posts

Есть код, по которому осуществляется вход в личный кабинет другого сайта и должен скачаться файл по ссылке. Но при попытке вывести страницу, это не происходит, возможно кто сталкивался с подобным и знает решение
 

<?php
$username = "login";
$password = "pasword";
$url = "url";

$csrf_token_field_name = "csrfmiddlewaretoken";
$params = array(
	"username" => $username,
	"password" => $password,
	//"another_mendatory_field" => "value"
	);
					
$token_cookie= realpath("cookie.txt");
file_put_contents($token_cookie, '');
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $token_cookie);
//curl_setopt($ch, CURLOPT_COOKIEFILE, $token_cookie);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);

echo $response;
	
if (curl_errno($ch)) die(curl_error($ch));
libxml_use_internal_errors(true);
$dom = new DomDocument();
$dom->loadHTML($response);
libxml_use_internal_errors(false);
$tokens = $dom->getElementsByTagName("input");
for ($i = 0; $i < $tokens->length; $i++) 
{
	$meta = $tokens->item($i);
	if($meta->getAttribute('name') == 'csrfmiddlewaretoken')
		$t = $meta->getAttribute('value');
}

if($t) {
	//$csrf_token = file_get_contents(realpath("another-cookie.txt"));
	$postinfo = "";
	foreach($params as $param_key => $param_value) 
	{
		$postinfo .= $param_key ."=". $param_value . "&";	
	}
	$postinfo .= $csrf_token_field_name ."=". $t;
		
	$headers = array();
		
	$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
	$header[] = "Cache-Control: max-age=86400";
	$header[] = "Connection: keep-alive";
	$header[] = "Keep-Alive: 300";
	$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
	$header[] = "Accept-Language: en-us,en;q=0.5";
	$header[] = "Pragma: ";
	$headers[] = "X-CSRF-Token: $t";
	//$headers[] = "Cookie: $token_cookie";
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36");
	curl_setopt($ch, CURLOPT_COOKIEJAR, $token_cookie);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $token_cookie);
	curl_setopt($ch, CURLOPT_POST, true);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
	curl_setopt($ch, CURLOPT_REFERER, $url);
	curl_setopt($ch, CURLOPT_AUTOREFERER, true);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
	curl_setopt($ch, CURLOPT_VERBOSE, true);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
	curl_setopt($ch, CURLOPT_TIMEOUT, 1000);
	curl_setopt($ch, CURLOPT_MAXREDIRS , 12);
		
	curl_exec($ch);
		
	curl_setopt($ch, CURLOPT_POST, false);
	curl_setopt($ch, CURLOPT_URL, 'url - страницы, которую необходимо вывести');
	$response = curl_exec($ch);
	echo $response;

	//preg_match ( '/(<table id="result_list">(.*)<\/table>)/s', $response, $matches ) ;

    echo '<div id="changelist" style="width:100%">';
    echo $matches[0];
    echo 'url - страницы, которую необходимо вывести';
    echo '</div>';
    
    //скачиваем файл по ссылке
    $permalink_price = 'url - на файл';
    $uploaddir = '/mailAttachment/4-price.xls';
    $uploadfile = $uploaddir.basename($permalink_price);

    if (copy($permalink_price, $uploadfile)){
        echo "Файл успешно загружен!<br>";
    }

//просмотр прав доступа
$path = '/mailAttachment/4-price.xls';

if(is_readable($path))
    echo 'Есть права на чтение.<br>';

if(is_writable($path))
    echo 'Есть права на запись.<br>';

	curl_close($ch); 
}
?>

 

Надіслати
Поділитися на інших сайтах


44 минуты назад, Wyachik2 сказал:

Но при попытке вывести страницу, это не происходит

Посмотрите какую ошибку пхп сервер пишет

 

Надіслати
Поділитися на інших сайтах

9 минут назад, Wyachik2 сказал:

В этом и проблема

Может он на экран её не пишет, но в логах то что то должно быть. Тут чудес то не бывает - или какая то ошибка и если запись лога включена, то она запишется, или работает.

 

Надіслати
Поділитися на інших сайтах

1 час назад, iglin сказал:

Может он на экран её не пишет, но в логах то что то должно быть. Тут чудес то не бывает - или какая то ошибка и если запись лога включена, то она запишется, или работает.

 

Лог пустой, но попытался сам найти в каком месте возникает проблема и после 

if($t) {
		//$csrf_token = file_get_contents(realpath("another-cookie.txt"));
		$postinfo = "";

Вообще ничего не выводит на экран

Надіслати
Поділитися на інших сайтах


А в $t в этот момент что то есть? Может первый curl не отрабатывает и там пусто?

 

Вы постепенно по каждому шагу выводите на экран что у вас в какой переменной и поймёте где чего нехватает. 

Надіслати
Поділитися на інших сайтах

9 минут назад, iglin сказал:

А в $t в этот момент что то есть? Может первый curl не отрабатывает и там пусто?

 

Вы постепенно по каждому шагу выводите на экран что у вас в какой переменной и поймёте где чего нехватает. 

Да, $t пустая, хотя в нее должны записываться данные
 

$meta = $tokens->item($i);
if($meta->getAttribute('name') == 'csrfmiddlewaretoken')
			$t = $meta->getAttribute('value');

 

Надіслати
Поділитися на інших сайтах


1 минуту назад, Wyachik2 сказал:

$meta = $tokens->item($i)

ну вот потихонику вверх и идите, анализируйте) Что в мета и так далее.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.