Smirnof

Рейтинг
72
Регистрация
13.11.2012
Интересы
efcb2e

LEOnidUKG, вот часть основного кода


<?php

$url = $_POST["url"];


// инициализация сеанса
$ch = curl_init();

// используем User Agent браузера
$user_agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, $url);

// Имитируем классический браузер и сохраняем COOKIES
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');

//TRUE для принудительного использования нового соединения вместо закэшированного.
curl_setopt($ch, CURLOPT_FRESH_CONNECT, false);

// в случае необходимости, следовать по перенаправлени¤м
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

// устанавливаем максимальное время конекта 5 секунд
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

// Опция указывает, что результат будет записан в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// загрузка страницы и выдача её браузеру
$page_source = curl_exec($ch);

// Получаю итоговый url после всех редиректов
$last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);


echo $page_source;

//print_r (curl_getinfo($ch));

// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>

как этим кодом вернуть куку на другой сайт - сайт который отправляет данному скрипту url?

Нашел инструкцию но не понял ее http://www.php.su/forum/topic.php?forum=74&topic=1893

А вот код самого сайта, куда и должна вернуться кука, данный сайт отправляет post запрос первому скрипту

<?php
// URL скрипта обработчика
$login_url = 'http://сайт.ru/inc.php';

// параметры для отправки запроса
$post_data = array(
'url' => 'http://reflink.ru/id555',

'cookielength' => '-1',
'hash_passwrd' => ''
);

// создание объекта curl
$ch = curl_init();

// используем User Agent браузера
$user_agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

// задаем URL
curl_setopt($ch, CURLOPT_URL, $login_url );

// указываем что это POST запрос
curl_setopt($ch, CURLOPT_POST, 1 );

// задаем параметры запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

// указываем, чтобы нам вернулось содержимое после запроса
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');


// выполняем запрос
$postResult = curl_exec($ch);


curl_close($ch);

echo $postResult;

?>

danforth, ошибку показывает в строке if (isset($url['port']) {

Parse error: syntax error, unexpected '{'

totamon, спасибо, я понял.

Делаю так


............
// Получаю итоговый url после всех редиректов
$last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

echo $last_url; ОТОБРАЖАЕТ URL http://site.ru/vasy/pupkin/news.html !


// Функция которая должна получить url из $last_url site.ru (пусть без протокола но хотя бы так)

function baseUrl() {

$url = "$last_url"; //так тоже делал $url = '$last_url';
$host = parse_url( preg_match('#^https?://#',$url) ? $url : 'http://'.$url, PHP_URL_HOST ) or die('Не верное имя домена');
return "</title>
<base href=\"{$host}\">";

}
..........

В итоге ничего не получается - Не верное имя домена

Я так понял, что $last_url не отображает url когда находится внутри function baseUrl() {

как исправить?

Помогите, пожалуйста.

Нет, не смог вытащить url

$last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

print_r($last_url);

как из print_r($last_url); или до его вывода получить домен не пойму.

---------- Добавлено 24.06.2017 в 14:22 ----------

помогите составить запрос для поисковиков... нахожу только регулярку которая вытаскивает имя домена а мне нужно еще и протокол

У меня с регулярками проблемы...

MikeTheRaven, спасибо!

Получил с помощью $last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); итоговый url адрес, теперь думаю как преобразовать его в имя домена http://site.ru из http://site.ru/vasy/pupkin/news.html и др.

По ссылкам вида https://t.co/oIPiZmAfXI как и по остальным редиректам ходить научился, а вот извлекать на старте конечный url - нет :(

Sigmo#ID, спасибо!

Я так сделал curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

верно? у меня работает!

Сделал так


<?php
// инициализация сеанса
$ch = curl_init();

// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "https://tumix.ru");


// Опция указывает, что результат будет записан в переменную
curl_setopt($page, CURLOPT_RETURNTRANSFER, 1);

// загрузка страницы и выдача её браузеру
$page_source = curl_exec($ch);

$page_source = preg_replace('/\<title\>(.*?)\<\/title\>/si', '<title>Мотороллер не мой, я просто спарсил</title>', $page_source);

echo $page_source;

// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>

title не изменился :(

Sigmo#ID:
Опцию CURLOPT_RETURNTRANSFER не забывайте

Сделал так


<?php
// инициализация сеанса
$ch = curl_init();

// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "https://tumix.ru");

// загрузка страницы и выдача её браузеру
// curl_exec($ch);

$page_source = curl_exec($ch);

// Опция указывает, что результат будет записан в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$page_source = preg_replace('/\<title\>(.*?)\<\/title\>/si', '<title>Мотороллер не мой, я просто спарсил</title>', $page_source);

// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>

Title не меняется, пробовал изменить preg_replace('/\<title\>(.*?)\<\/title\>/si'........ тоже не помогло

Нет, так и не могу изменить tilte, body

и в поисковиках не знаю, что искать...

---------- Добавлено 19.06.2017 в 14:38 ----------

Сделал так

<?php
// инициализация сеанса
$ch = curl_init();

// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, "https://tumix.ru");

// загрузка страницы и выдача её браузеру
// curl_exec($ch);

$page_source = curl_exec($ch);
$new_title = preg_replace('/\<title\>(.*?)\<\/title\>/si', '<title>Мотороллер не мой, я просто спарсил</title>', $page_source);

// завершение сеанса и освобождение ресурсов
curl_close($ch);
?>

Title не изменился

Всего: 235