Node.js Курс выскабливания АГУ - PullRequest
3 голосов
/ 06 декабря 2011

Я довольно новичок в Node.js, поэтому заранее извиняюсь, если не знаю, о чем говорю.

Я пытаюсь вычеркнуть некоторые курсы из каталога курсов АГУ (https://webapp4.asu.edu/catalog/) и предприняли многочисленные попытки с использованием Zombie, Node.IO и API HTTPS. В обоих случаях я столкнулся с циклом перенаправления.

Мне интересно, не потому лизаголовки правильно?

Ниже приведен пример кода того, что я использовал (не Zombie / Node.IO):

var https = require('https');

var option = {
  host: 'webapp4.asu.edu',
  path: '/catalog',
  method: 'GET',
  headers: {
    'set-cookie': 'onlineCampusSelection=C'
  }
};

var req = https.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
  res.on('data', function(d) {
    process.stdout.write(d);
  });
});

Просто чтобы уточнить, у меня нет проблем с очисткой с Node.js в целом. Более конкретно, однако, каталог курсов АГУ, который доставляет мне неприятности.

Оцените любые идеи, которые вы, ребята, могли бы дать мне, спасибо!

Обновление: мой запрос успешно прошелесли я создаю cookie с JSESSIONID, полученным из Chrome / FF, есть ли способ запросить / создать JSESSIONID?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

Похоже, что сервер устанавливает cookie-файл JSESSIONID, а затем перенаправляет его, поэтому вам нужно указать, чтобы node.js не следовал перенаправлениям, если вы хотите получить cookie-файл. Я не знаю, как это сделать с пакетами http или https, но есть другой пакет, который вы можете получить через npm: request, который позволяет вам это делать. Вот пример, с которого стоит начать:

var request = require("request");

var options = {
  url: "https://webapp4.asu.edu/catalog/",
  followredirect: false,
}

request.get(options, function(error, response, body) {
  console.log(response.headers['set-cookie']);
});

Вывод должен выглядеть примерно так:

[ 'JSESSIONID=B43CC3BB09FFCDE07AE6B3B702717431.catalog1; Path=/catalog; Secure' ]
0 голосов
/ 06 декабря 2011

Я настоятельно рекомендую использовать jsDOM в сочетании с jQuery (для узла) . Я использовал его много-много раз для подковы, так как это делает его очень простым.

Вот пример из файла readme:

// Count all of the links from the nodejs build page
var jsdom = require("jsdom");

jsdom.env("http://nodejs.org/dist/", [
  'http://code.jquery.com/jquery-1.5.min.js'
],
function(errors, window) {
  console.log("there have been", window.$("a").length, "nodejs releases!");
});

Надеюсь, это поможет, JSDOM очень легко взломать эксперименты по очистке (по крайней мере, для меня).

...