Итак, я пытаюсь свернуть страницу: http://rutgers.bncollege.com/webapp/wcs/stores/servlet/TextBookProcessDropdownsCmd?campusId=35577418
, чтобы извлечь некоторые данные. Проблема в том, что я получаю либо ошибку 404, либо статус 302 в заголовке. Я подозреваю, что это как-то связано с тем, что Барнс и Tomcat Нобла неправильно перенаправляют на сервлет при удаленном запросе. Это просто предположение, хотя. Я попробовал несколько реализаций, используя как libcurl в PHP5, liburl в Python, AJAX (фреймворк и не-фреймворк), так и используя бинарный файл curl из моего терминала.
Вот пример вывода, который я получаю, когда я повторяю текст ответа:
Произошла ошибка:
Код ошибки: 404
Цель сообщения: /BNCB_GenericError.jsp
Имя сервлета: Процессор JSP 1.2
Трассировка стека: [Ljava.lang.StackTraceElement; @ 14b6c4d
Основная причина: N / A
Вот заголовки, которые я отправляю и получаю:
Заголовки ответа
Истекает четверг, 01 декабря 1994 года, 16:00:00 по Гринвичу
Cache-Control no-cache = "set-cookie, set-cookie2"
Местоположение http://uncc.bncollege.com/webapp/wcs/stores/servlet/TBDropDownView?campusId=1748054&dojo.transport=xmlhttp&dojo.preventCache=1300287790307&ddkey=TextBookProcessDropdownsCmd
Длина содержимого 0
Продолжительность PerfHeader = D = 56606,
время = т = 1300287776952692
Тип содержимого text / html;
* * Тысяча сорок-одина кодировка = ISO-8859-1 * * тысяча сорок-две
Content-Language en-US Дата Ср, 16
Март 2011 15:02:57 GMT
Поддержание соединения
Разное Accept-Encoding
Set-Cookie WC_SESSION_ESTABLISHED = true; домен = .bncollege.com; путь = /
WC_ACTIVESTOREDATA =% 2D1% 2c0; домен = .bncollege.com; Путь = / WC_USERSESSION_46349649 = 46349649% 2cnull% 2cnull% 2c% 2d2000% 2cnull% 2cnull% 2cnull% 2cnull% 2cnull% 2cnull% 2cnull% 2cnull% 2c% 5B0% 7cnull% 7cnull% 7cnull% 7c% 2d2000% 5d% 2c8XwO3l7WhszbuSO41vmZUDtbpoQ% 3d; домен = .bncollege.com; Путь = /
JSESSIONID = 0000AuZi2Uo6F6Ft5xihFdUsBQn: app06z02; домен = .bncollege.com; Path = /
TS884e96 = b7fb55c6fcd8aff3987bcdb831a8255a16b4cbcb208252614d80d120;
Заголовки запроса
Host uncc.bncollege.com
User-Agent Mozilla / 5.0 (Macintosh; U;
Intel Mac OS X 10.6; EN-US;
rv: 1.9.2.15pre) Gecko / 20110227
Firefox / 3.6.15pre (Сообщество Mac
Build, ElFurbe)
Принять текст / html, application / xhtml + xml, application / xml; q = 0,9, / ; q = 0,8
Accept-Language en-us, en; q = 0,5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1, utf-8; q = 0,7, *; q = 0,7
Keep-Alive 115 Поддержание соединения
рефери http://localhost/bn.php
Происхождение http://localhost
И вот код для этого:
function bufferURL($url,$bindArgs) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://rutgers.bncollege.com/webapp/wcs/stores/servlet/TBWizardView?catalogId=10001&storeId=58552&langId=-1');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_exec($ch);
$url .= '?';
foreach ($bindArgs as $a => $b) $url .= $a . '=' . $b . '&';
$url = substr($url,0,strlen($url)-1);
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_URL, $url);
echo curl_exec($ch);
}
BN, похоже, использует Dojo для выполнения своих запросов AJAX к сервлету; однако даже при использовании того же формата запроса я не могу выполнить репликацию.