Jump to content
Wyachik2

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

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); 
}
?>

 

Share this post


Link to post
Share on other sites
44 минуты назад, Wyachik2 сказал:

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

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

 

Share this post


Link to post
Share on other sites
15 часов назад, iglin сказал:

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

 

В этом и проблема, что ничего не пишет

Share this post


Link to post
Share on other sites
9 минут назад, Wyachik2 сказал:

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

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

 

Share this post


Link to post
Share on other sites
1 час назад, iglin сказал:

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites
9 минут назад, iglin сказал:

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

 

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

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

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

 

Share this post


Link to post
Share on other sites
1 минуту назад, Wyachik2 сказал:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.