使用 curl 监控您的 Vonage 电话账单

作者:Mitch Frazier

如果您是 Vonage 用户,并且想随时了解您本月的账单情况,那么这里描述的脚本可以帮助您。该脚本使用curl登录您的 Vonage 帐户并下载包含您当前余额的网页。然后使用grepsed.

提取余额curl下载网页很容易,但如果您需要登录到网站才能访问要下载的网页,那就有点棘手了。使用curl访问登录页面后面的页面的基本步骤是

  • 确定登录 URL(包含登录表单的页面)。
  • 在浏览器中打开登录页面。
  • 使用浏览器的“查看源代码”选项查看 HTML 并找到登录表单。记下表单提交到的 URL 和提交的字段的名称。通常只有 2 个字段:用户名和密码(尽管它们可能有不同的名称),但也可能有一些隐藏字段需要您包含(以及了解它们是什么以及发送的适当值)。
  • 使用curl检索登录页面。 请注意,实际上可能没有必要检索此页面,但如果表单提交到的页面希望设置一些 cookie,您可能需要先检索此第一页,以便您可以创建和保存 cookie(curl会为您执行此操作)。
  • 第二次调用curl并提交登录数据。
  • 现在第三次调用curl,传递您要检索的实际页面的 URL。
  • 如果该网站有注销链接,您可以选择第四次使用curl来检索注销页面,以确保会话已关闭。

下面的curl命令检索 Vonage 登录页面

curl --silent --cookie-jar $cookie_jar \
    --output $web_page-1 \
    http://www.vonage.com/?login

注意--cookie-jar选项,它将网站所需的任何 cookie 存储在指定的文件中。用于存储检索到的页面的文件由--output选项指定。

下面的curl下面的命令现在提交登录表单所需的登录数据

curl --silent --cookie $cookie_jar --cookie-jar $cookie_jar \
    --location \
    --data "username=$username&password=$password" \
    --output $web_page-2 \
    https://secure.vonage.com/vonage-web/public/login.htm

请注意,除了--cookie-jar选项之外,我们还指定了--cookie选项。这告诉curl使用我们在第一次调用中创建的 cookie jar 作为此调用的输入。我们还指定了--location选项,以便跟随页面发送的任何重定向。要提交的实际数据由--data选项指定。 数据中等号之前的数值是登录表单中的字段名称,之后的数值是要提交的适当字段值。

以下两个curl命令现在检索账单页面并从 Vonage 注销

curl --silent --cookie $cookie_jar --cookie-jar $cookie_jar \
    --output $web_page-3 \
    https://secure.vonage.com/webaccount/billing/index.htm

curl --silent --cookie $cookie_jar --cookie-jar $cookie_jar \
    --location \
    --output $web_page-4 \
    https://secure.vonage.com/webaccount/public/logoff.htm

剩下的就是从账单页面(我们检索的第三页)提取帐户余额。 在查看返回的 HTML 后,我能够看到我想要的数据位于何处,并确定一种使用grepsed:

echo Phone bill: $(grep 'td_value_total_amount' $web_page-3 | sed -e 's/.*>\$//' -e 's/<.*//')

以下显示了脚本的示例运行

$ sh check-vonage.sh


Phone bill: 12.50

整个脚本如下

#!/bin/bash

cookie_jar=cookies.tmp
web_page=vonage.tmp
username=USERNAME
password=PASSWORD

trap "rm -f $cookie_jar $web_page-*" EXIT

curl --silent --cookie-jar $cookie_jar \
    --output $web_page-1 \
    http://www.vonage.com/?login

curl --silent --cookie $cookie_jar --cookie-jar $cookie_jar \
    --location \
    --data "username=$username&password=$password" \
    --output $web_page-2 \
    https://secure.vonage.com/vonage-web/public/login.htm

curl --silent --cookie $cookie_jar --cookie-jar $cookie_jar \
    --output $web_page-3 \
    https://secure.vonage.com/webaccount/billing/index.htm

curl --silent --cookie $cookie_jar --cookie-jar $cookie_jar \
    --location \
    --output $web_page-4 \
    https://secure.vonage.com/webaccount/public/logoff.htm

echo
echo
echo Phone bill: $(grep 'td_value_total_amount' $web_page-3 | sed -e 's/.*>\$//' -e 's/<.*//')

Mitch Frazier 是 Emerson Electric Co. 的嵌入式系统程序员。自 2000 年代初以来,Mitch 一直是Linux Journal 的贡献者和朋友。

加载 Disqus 评论