【问题标题】:Press javascript button on webpage using curl & bash使用 curl 和 bash 在网页上按下 javascript 按钮
【发布时间】:2015-09-19 16:44:01
【问题描述】:

我在这里的第一篇文章,所以如果这个话题在其他地方得到回答,请告诉我。 我发现了类似的帖子,但没有设法用它们来解决我的问题。

背景: 我使用 IPTV 服务提供商,它提供了在运行 KODI 的 RPi 上观看电视频道的可能性。 因此,该提供商与一些播放列表 URL 一起促进 IPTV 简单客户端的使用。 让思考更短,这个播放列表仅为我的帐户生成,并绑定到我的公共 IP 地址。 问题,我没有并且想要一个固定的公共 IP 地址,所以每次我的 ISP 重置我的 DSL 连接时,我必须登录 IPTV 提供商页面并按下所谓的“更新 IP”按钮。这很烦人! 我想使用 bash 脚本自动执行该脚本,该脚本将由我的 rpi 上定期运行的动态 dns 服务更新触发。

到目前为止我所管理的: - 使用带有 CURL 的 bash 命令登录网页并将 cookie 保存到文本文件中。 用这个:

 curl -c cookie.txt -d "user=mymail@mail.com" -d "pass=mypass" http://www.spicetvbox.ro/user/login

然后我尝试了几种方法来按下“更新 IP”按钮:

 curl -b cookie.txt  -d "press=UPDATEIP" http://www.spicetvbox.ro/user/xbmc
 curl -b cookie.txt  -d "button=Upfate IP" http://www.spicetvbox.ro/user/xbmc
 curl -b cookie.txt -X POST   http://www.spicetvbox.ro/user/xbmc

并分配其他类似的命令。 我尝试使用萤火虫检查按钮元素.. 这是来自 firebug 的 html:

<form id="formXBUpd89942" class="jqValidation" role="form" novalidate="novalidate" action="http://www.spicetvbox.ro/user/xbmc" method="post">
<input type="hidden" value="UPDATEIP" name="run">
<input type="hidden" value="89942" name="id">
<button class="btn btn-info btn-xs" type="submit">
<i class="fa fa-refresh"></i>
  Update IP
</button>

请给我一些关于如何从 CURL 按下该按钮的建议。

【问题讨论】:

    标签: javascript bash curl


    【解决方案1】:

    您实际上并不需要点击按钮 - 您需要提交表单,或者至少达到相同的效果。

    使用 cURL 向http://www.spicetvbox.ro/user/xbmc 发送 HTTP POST - 类似这样:

    curl -b cookie.txt --data "run=UPDATEIP&id=89942" http://www.spicetvbox.ro/user/xbmc
    

    此数据取自表单字段的值,而 URL 取自表单元素的 action 属性。当指定--data(相当于-d)时,cURL 执行一个POST。

    【讨论】:

    • 如果您在运行 curl 时遇到问题(并且可以可靠地重现它们),也许这应该是一个单独的问题,尽管没有更多细节我不确定我或其他任何人将如何能够帮你...
    • 你是对的,很抱歉没有提供很多细节。我会尝试自己解决问题,如果我不能解决,我会发布一个新问题。非常感谢,Tom Fenech,你让我很开心:D
    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 2021-07-01
    • 2016-12-06
    • 1970-01-01
    • 2015-11-17
    • 2011-04-20
    • 2013-09-14
    相关资源
    最近更新 更多