Сессия также нуждается в механизме идентификации вас. Популярные методы включают в себя: куки, идентификатор сессии в URL.
A curl -v
в URL-адресе 1 указывает, что файл cookie сеанса действительно установлен.
Set-Cookie: ASPSESSIONIDASBRRCCS=LKLLPGGDFBGGNFJBKKHMPCDA; path=/
Вам необходимо отправлять этот файл cookie на сервер при любых последующих запросах, чтобы сохранить сеанс в рабочем состоянии.
Если вы хотите использовать file_get_contents
, вам нужно вручную создать контекст для него с помощью stream_context_create
, чтобы включить файлы cookie в запрос.
Альтернативой (которую я лично предпочел бы) было бы использование curl
функций , удобно предоставляемых PHP. (Он может даже позаботиться о трафике файлов cookie для вас!) Но это только мои предпочтения.
Редактировать:
Вот рабочий пример, чтобы очистить путь в вашем вопросе.
$scrape = array(
"https://duapp3.drexel.edu/webtms_du/",
"https://duapp3.drexel.edu/webtms_du/Colleges.asp?Term=201125&univ=DREX",
"https://duapp3.drexel.edu/webtms_du/Courses.asp?SubjCode=CS&CollCode=E&univ=DREX"
);
$data = '';
$ch = curl_init();
// Set cookie jar to temporary file, because, even if we don't need them,
// it seems curl does not store the cookies anywhere otherwise or include
// them in subsequent requests
curl_setopt($ch, CURLOPT_COOKIEJAR, tempnam(sys_get_temp_dir(), 'curl'));
// We don't want direct output by curl
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Then run along the scrape path
foreach ($scrape as $url) {
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
}
curl_close($ch);
echo $data;