我是 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 文件输出。
我的第二个例子有错误吗?有没有其他方法可以让我免去使用第一种方法登录网站数百次下载数据的麻烦?
答案1
报价页面是否位于网站的密码保护区域?如果是,-c 不是会创建一个新的 cookie 文件吗?您不想使用 -b 加载 cookie 文件吗?我不太熟悉 curl 命令行,但已经开发了一些使用 curl multi 的脚本。您可能只需要花几块钱就可以制作一个简单的 php 脚本,它可以让您硬编码您的登录名和密码,然后只需将其设置为 cron 脚本即可根据需要随时运行。
答案2
如果您的意思是用户名和密码在登录页面的表单中输入,那么 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