Php получить ссылку редиректа

Определение переадресации на другую ссылку

1) Имеется ссылка вида https://vk.cc/9aBrk .
2) Она дает переадресацию на сайт, ссылка которого r.lt28.ru .
3) Этот сайт, в свою очередь, дает переадресацию на третий сайт, допустим site.ru .

Возможно ли средствами php определить куда переадресовывает пользователя — сначала на сайт №2, затем №3 ?
Если да, то что нужно использовать?

Переход на другую ссылку, но с обновлением
Ребят, подскажите пожалуйста. вот есть такой код window.location.href = data.Link;.

Как сделать ссылку на другую страницу?
<!—Let browser know website is optimized for mobile—> <meta name="viewport".

Как в css задать ссылку на другую страницу
Как в css задать ссылку на другую страницу? предположим есть див с классом 111, нужно написать.

Как из категории сделать ссылку на другую категорию
Добрый день! Подскажите пожалуйста новичку: дано две категории товара, как из одной категории.

Эксперт PHP

ЦитатаСообщение от Vasiliyy Посмотреть сообщение

1. Например, с помощью get_headers получить заголовки.
2. Если статус 3xx и есть заголовок Location, то повторить п.1 для значения этого заголовка.
3. Учитывать что может быть циклический редирект

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

Скрипт написан для сообщества вк против спам-ботов, которые пиарят левые сайты в своем профиле. Всё что остается — брать скриптом нужную ссылку с профиля, и присваивать её для $site.
Также написал его для своего случая, другим же людям нужно будет что-то изменить в нём, возможно.
Возможно есть г#внокод, но это уже сами исправляйте) Я, как выше писал, здесь только искал алгоритм поиска.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
 $site = 'https://vk.cc/9aBqmx'; /** * 1) В цикле php получает редирект Location на следующий сайт. * 2) echo в каждой итерации выводит название сайта, куда стоит переадресация * 3) Цикл получает url последнего сайта, где уже нет редиректа и, в моем случае, уже ищет редирект в самом html коде */ for ($i = 0; $i  10; $i++)// 10-ти циклов хватит  $temp_site = check_redirect_header( $site ); echo ($i+1)."  else { $html = file_get_contents($site); if(strstr($html, 'jeempo.com')) { echo "

РЕДИРЕКТ НА САЙТ jeempo.com . "
; break; } } } function check_redirect_header($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $a = curl_exec($ch); $error = curl_error($ch); if($error) return $error; // if(preg_match('#Location: (.*)#', $a, $r)) $l = trim($r[1]); if(preg_match('/https:\/\/vk\.com\/away\.php\?cc_key=(.*)&to=(.*)/', $l, $r)) $l = urldecode( trim($r[2]) ); // return $l; }

Источник

W-Shadow.com

HTTP redirects usually have the response status 301 or 302 and provide the redirection URL in the “Location” header. I’ve written three complementary PHP functions that you can use to find out where an URL redirects to (based on a helpful thread at WebmasterWorld). You don’t even need CURL for this – fsockopen() will do just fine.

The PHP script

/** * get_redirect_url() * Gets the address that the provided URL redirects to, * or FALSE if there's no redirect. * * @param string $url * @return string */ function get_redirect_url($url) < $redirect_url = null; $url_parts = @parse_url($url); if (!$url_parts) return false; if (!isset($url_parts['host'])) return false; //can't process relative URLs if (!isset($url_parts['path'])) $url_parts['path'] = '/'; $sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30); if (!$sock) return false; $request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1\r\n"; $request .= 'Host: ' . $url_parts['host'] . "\r\n"; $request .= "Connection: Close\r\n\r\n"; fwrite($sock, $request); $response = ''; while(!feof($sock)) $response .= fread($sock, 8192); fclose($sock); if (preg_match('/^Location: (.+?)$/m', $response, $matches))< if ( substr($matches[1], 0, 1) == "/" ) return $url_parts['scheme'] . "://" . $url_parts['host'] . trim($matches[1]); else return trim($matches[1]); >else < return false; >> /** * get_all_redirects() * Follows and collects all redirects, in order, for the given URL. * * @param string $url * @return array */ function get_all_redirects($url) < $redirects = array(); while ($newurl = get_redirect_url($url))< if (in_array($newurl, $redirects))< break; >$redirects[] = $newurl; $url = $newurl; > return $redirects; > /** * get_final_url() * Gets the address that the URL ultimately leads to. * Returns $url itself if it isn't a redirect. * * @param string $url * @return string */ function get_final_url($url)< $redirects = get_all_redirects($url); if (count($redirects)>0) < return array_pop($redirects); >else < return $url; >>

Here’s an example that lists all URLs that a given address redirects to (in order) :

$rez = get_all_redirects('http://daerils.gtrends.hop.clickbank.net/'); print_r($rez);

Known Issues

Most likely you won’t ever run into one of these, but here they are anyway :

  • The script doesn’t recognize infinite redirects that don’t form a loop. However, it can handle normal redirection loops – get_all_redirects() exits as soon as it encounters an URL that it has already seen.
  • Relative redirects multiple (e.g. “Location: go.php?asdf”) won’t be fully followed by get_all_redirects().
  • Not an issue per-se, yet something to note : these functions won’t tell you if an URL is valid, just what it redirects to (if anything).

On a related note, check out the Firefox extension Redirect Remover.

Related posts :

This entry was posted on Saturday, July 5th, 2008 at 23:54 and is filed under Web Development. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Источник

Определить куда происходит редирект

Здравствуйте, я в пхп новичёк и даже не знаю в какую сторону думать.

Существует список линков в txt файле формата http://сайт.ру/?p=12363
Задача такова:
Нужно определить куда редиректит, либо использовать скрипт, чтоб переходил по ссылке и куда попал, эту ссылку и записывает.

P.S. Я не прошу писать мне рабочий код, просто повернуть в нужное направление( желательно «Обрати внимание на такие-то функции», а не «Прочитай книгу или мануал по CURL и т.п.»)

Почему не происходит редирект?
Здравствуйте! Подскажите, почему редиректа с неавторизованного браузера не происходит? На одной из.

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

Происходит редирект на сайты с рекламой после нажатия на кнопки или ссылки на других сайтах
Здравствуйте. Столкнулась с проблемой, когда после нажатия на какую-то ссылку или кнопку иногда.

Куда происходит запись файла, если не указать полный путь до него, а только одно его имя?
Доброго всем здравия, душевного и телесного, подскажите пожалуйста где находится этот самый файл.

Эксперт HTML/CSSЭксперт PHP

Смотря что именно вы хотите узнать по этому адресу

хотелось-.s просто узнать куда редирект вот к примеру l2top.ru/?out=1

P.S. извените за ссылку, я её удалю после просмотра.

Эксперт HTML/CSSЭксперт PHP

ЦитатаСообщение от HellFire Посмотреть сообщение

вот это и непонятно как раз. Ну вот перешел скрипт туда, что он должен сообщить?
1. Сайт существует/нет?
2. Заголовок страницы?
3. Еще какой то текст/элемент страницы?
4. Еще что-то другое?

Добавлено через 1 минуту
а, то есть надо узнать открывается ли там сайт по этой ссылке или сначала выполняется редирект, это что ли?

Источник

Получение конечной ссылки многократного редиректа

Получение адреса ссылки редиректа средствами VBA
Добрый день! Суть вопроса: Исходные данные: ссылка на web-страницу. Если ссылка содержит.

Форум — ссылки без скрытия и редиректа .
Есть сайт, галерея и форум. На форуме в процессе общения и накала страстей юзеры часто (очень.

C# получение ссылки на сборку
Пробую сделать подключение к базу данных, при объявлении "SqlConnection" выдаётся ошибка. Этот тип.

ЦитатаСообщение от Nikit04ek Посмотреть сообщение

Эксперт PHP

ЦитатаСообщение от Nikit04ek Посмотреть сообщение

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //set url curl_setopt($ch, CURLOPT_HEADER, true); //get header curl_setopt($ch, CURLOPT_NOBODY, true); //do not include response body curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //do not show in browser the response curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //follow any redirects curl_exec($ch); $new_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); //extract the url from the header response curl_close($ch); var_dump($new_url);

Получение ссылки из JSON
Есть JSON. Из него получено ID изображения. Как склеить адрес изображения. <br> .

Получение ссылки на файл
Есть некий сайт, на нем кнопка, по нажатию которой скачивается файл. Ссылка на файл не прямая.

Получение ссылки из кеша
Имеется такой вот код: using System; using System.Runtime.InteropServices; // Visual C#.

Получение короткой ссылки
Здравствуйте! Есть задача: написать скрипт, позволяющий получать короткие ссылки с помощью сервиса.

Получение ссылки на процесс
Всем привет. Что то я немного запутался в какой раздел писать ))). Пожалуйста, подскажите как.

Источник

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

5aeb8131ad28d629962897.png

Поиск по электронному каталогу библиотеки:

Для примера напишем название книги «Дизайн привычных вещей» и нажмём кнопку. Нас перекинут на следующий адрес:

http://catalog.mgdb.ru:49001/cgi-bin/koha/opac-search.pl?q=Дизайн+привычных+вещей&idx=ti
http://catalog.mgdb.ru:49001/cgi-bin/koha/opac-detail.pl?biblionumber=31737

Я использую Guzzle. Могу программно сформировать первую ссылку. А как программно получить вторую? То есть понять, какой biblionumber для каждой книги.

Это нужно, чтобы потом программно переходить на вкладку MARC View и оттуда читать данные. Адрес MARC View без названия книги, но с biblionumber:

http://catalog.mgdb.ru:49001/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=31737

Taraflex

Спасибо! Попробовал, получилось не совсем то.

$response = $client->request('GET', 'http://catalog.mgdb.ru:49001/cgi-bin/koha/opac-search.pl?idx=ti&q=Дизайн+привычных+вещей', [ 'on_stats' => function (TransferStats $stats) < echo $stats->getEffectiveUri(); > ]);
http://catalog.mgdb.ru:49001/cgi-bin/koha/opac-search.pl?idx=ti&q=%D0%94%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD+%D0%BF%D1%80%D0%B8%D0%B2%D1%8B%D1%87%D0%BD%D1%8B%D1%85+%D0%B2%D0%B5%D1%89%D0%B5%D0%B9http://catalog.mgdb.ru:49001/cgi-bin/koha/opac-detail.pl?biblionumber=31737

В конце есть нужный мне biblionumber, но как бы его красиво, отдельно вывести?

require 'vendor/autoload.php'; // Подключаем классы Client use GuzzleHttp\Client; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\UriInterface; // Функция для вывода адреса после редиректа $onRedirect = function(RequestInterface $request, ResponseInterface $response, UriInterface $uri) < echo $uri; >; // Инициализируем класс для работы с удаленными веб-ресурсами $client = new Client(); // Делаем запрос, получаем ответ $response = $client->request('GET', 'http://catalog.mgdb.ru:49001/cgi-bin/koha/opac-search.pl?idx=ti&q=Дизайн+привычных+вещей', [ 'allow_redirects' => [ 'strict' => true, // use "strict" RFC compliant redirects. 'referer' => true, // add a Referer header 'on_redirect' => $onRedirect, 'track_redirects' => true ] ]); echo $res->getHeaderLine('X-Guzzle-Redirect-History');

Как красиво получить только biblionumber, задам в другом вопросе.

echo substr($uri, 70); // выведется только значение biblionumber, например 31737
echo $res->getHeaderLine('X-Guzzle-Redirect-History');

Что делает эта переменная-функция?

$onRedirect = function(RequestInterface $request, ResponseInterface $response, UriInterface $uri) < echo substr($uri, 70); >;
$onRedirect = function(RequestInterface $request, ResponseInterface $response, UriInterface $uri) < echo "http://catalog.mgdb.ru:49001/cgi-bin/koha/opac-MARCdetail.pl?biblionumber php">// Получаем название книги, заменяем все пробелы на знак плюса $bookTitle = str_replace(" ", "+", "Дизай привычных вещей"); require 'vendor/autoload.php'; // Подключаем классы Client use GuzzleHttp\Client; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\UriInterface; // Функция для вывода адреса после редиректа $onRedirect = function(RequestInterface $request, ResponseInterface $response, UriInterface $uri) < echo "http://catalog.mgdb.ru:49001/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=" . substr($uri, 70); >; // Инициализируем класс для работы с удаленными веб-ресурсами $client = new Client(); // Делаем запрос, получаем ответ $response = $client->request('GET', 'http://catalog.mgdb.ru:49001/cgi-bin/koha/opac-search.pl?idx=ti&q='.$bookTitle.'', [ 'allow_redirects' => [ 'strict' => true, // use "strict" RFC compliant redirects. 'referer' => true, // add a Referer header 'track_redirects' => true ] ]);

Taraflex

Guzzle автоматом обрабатывает редиректы. Тело ответа можно вытащить из
$response->getBody()->getContents();

$query = []; parse_str(parse_url($url, PHP_URL_QUERY), $query); echo $query['biblionumber'];

Источник

Читайте также:  Custom error function php
Оцените статью