удалить идентификатор сессии из URL - PullRequest
1 голос
/ 21 октября 2010

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

Поэтому мой вопрос: как я могу удалить идентификатор сеанса из всех ссылок, есть ли какая-то разумная идея?Я занимаюсь разработкой на php , но все другие платформы будут полезны, даже на словах.

Ответы [ 3 ]

2 голосов
/ 21 октября 2010

Например, если вы хотите использовать RegEx, это удалит все сессии из вашего URL-адреса (если у них 32 символа, что, как мне кажется, обычно):

$url = preg_replace('#([\w\d]+=[\w\d]{32})#',null,$url);

1 голос
/ 21 октября 2010

Вы можете использовать parse_str () и http_build_query (), чтобы извлечь, очистить и перестроить параметры URL. Вы можете использовать регулярные выражения, но я думаю, что было бы проще получить массив параметров URL для работы.

parse_str('session=123445&data=example&action=demo', $url_params);
// $url_params is now an associative array of the url params
unset($url_params['session'], $url_params['action']);
$new_url_param_string = http_build_query($url_params);
1 голос
/ 21 октября 2010

Вы всегда можете использовать регулярное выражение для сопоставления ключей сеанса, они типичны для большинства случаев (PHPSESSID). В любом случае, если вы сканируете что-то и хотите принимать файлы cookie и работать с ними, вам следует использовать cURL (см. curl_setopt COOKIE, COOKIEFILE и COOKIEJAR).

...