Я новичок в cURL и пытаюсь сделать что-то достаточно простое. Я хочу войти на сервер и загружать данные через определенные промежутки времени в течение нескольких часов.
Во-первых, я вхожу на сервер, и это мне удалось, разместив следующие значения входа:
curl -v -c I:\ccookiejar.txt -d "user=me&password=whatever&Login=submit" http://www.website.com/login_p.asp -o I:\curltest.htm
во-вторых, я хочу загрузить html-страницу данных (я не беспокоюсь о коде, который будет делать это неоднократно; на данный момент, хотя бы один раз было бы хорошо), я подумал, что что-то вроде этого, включая файлы cookie для сеанса, чтобы спасти меня вход в систему каждый раз.
curl -v -c I:\ccookiejar.txt "http://www.website.com/equities/quotes.asp?refRate=&levels=&Symbol=abc&type=2&v.x=33&v.y=16" -o I:\curltest2.htm
Но это не работает как отдельная команда. Вроде из-за того, что cURL закрывает соединение?
Когда я включаю URL-адрес для данных, которые хочу загрузить, в той же команде, что и URL-адрес для входа, он работает нормально, и я получаю два выходных файла htm с ожидаемыми данными.
Я ошибся во втором примере? Есть ли другой способ избавить меня от необходимости сотни раз заходить на сайт для загрузки моих данных первым методом?
Если вы имеете в виду, что имя пользователя и пароль вводятся в форме на странице входа, то cURL может «отправить» эту форму, например:
curl -d "username=yourusername&password=yourpassword" http://yourweb.com/login
и если вы хотите сохранить возвращаемый cookie, вы делаете это, указав файл cookie:
curl -c cookies.txt -d "username=yourusername&password=yourpassword" http://yourweb.com/login
и использовать эти файлы cookie в последующих запросах, которые вы делаете:
curl -b cookies.txt -d "username=yourusername&password=yourpassword" http://yourweb.com/login
или сделайте и то, и другое, если вы хотите отправлять и получать файлы cookie:
curl -b cookies.txt -c cookies.txt -d "username=yourusername&password=yourpassword" http://yourweb.com/login
Находится ли страница цитат в защищенной паролем области сайта? Если да, то разве -c не создает новый файл cookie? Разве вы не хотели бы загружать файл cookie с помощью -b? Я не знаком с командной строкой curl, но у меня было несколько сценариев, разработанных для использования curl multi. Вероятно, у вас может быть простой скрипт php, сделанный буквально за пару долларов, который позволяет вам жестко закодировать ваш логин и передать его, а затем просто установить его как скрипт cron для запуска так часто, как вам нужно.