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

Вход в личный кабинет другого сайта через 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); 
}
?>

 

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


  В 16.11.2020 в 14:29, Wyachik2 сказав:

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

Expand  

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

 

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

  В 17.11.2020 в 07:02, Wyachik2 сказав:

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

Expand  

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

 

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

  В 17.11.2020 в 07:16, iglin сказав:

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

 

Expand  

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

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

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

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


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

 

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

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

  В 17.11.2020 в 09:02, iglin сказав:

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

 

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

Expand  

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

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

 

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


  В 17.11.2020 в 09:13, Wyachik2 сказав:

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

Expand  

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

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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