o******1 发帖数: 1046 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: outlook1 (outlook1), 信区: Programming
标 题: 请教个wget获取要密码登录的http页面的问题
发信站: BBS 未名空间站 (Thu Oct 8 19:20:51 2015, 美东)
目的是想获取router的一些即时的信息,但是这个router不支持snmp,现在想到的只有
从http页面用wget(或者curl)搞。当然是有大量的相似的router,所以必须自动化。
但是搞不定这种登录的情形。比如登录页面是http://172.16.0.1/login/,需要获取数据的页面是http://172.16.0.1/diagnostics/。我先用wget从http://172.16.0.1/login/保存一个cookies.txt,同时加了--keep-session-cookies选项。对比了直接从浏览器的cookie,这个获取的cookies.txt内容一模一样。
但是下一步就不行了。我用了--load-cookies,然后再用--post-data把http://172.16.0.1/diagnostics/页面form中input的参数pass过去,仔细检查过,没有typo。但是就是获取不到登录后的信息,wget返回的还是未登录前的http文件。
看了一下这个页面的source,好像有一些javascript函数,还有把密码和一段string一
起sha256加密,还有form的action函数是未知的。
请教俩问题:
1. 原则上,只要所有信息输入正确,命令行输入正确,所有需要authentication的页
面都能用wget(或者curl)返回吗?
2. 具体我这个case,有没有什么建议呢?
谢谢! |
x****s 发帖数: 921 | 2 1. yes, http/https works just plain text
2. Use firefox and try 'Tools - web developer - network' to check complete
request header/cookie/data etc |
a9 发帖数: 21638 | 3 你可以用chrome或firefox里的调试工具看看post的什么内容,然后模拟。把cookie提
交上去应该是可行的。或许还验证了其它的内容,比如useragent是否一致以及除了
cookie还有什么x-http什么之类的http头。你最好模拟中包含所有的http头
【在 o******1 的大作中提到】 : 【 以下文字转载自 Programming 讨论区 】 : 发信人: outlook1 (outlook1), 信区: Programming : 标 题: 请教个wget获取要密码登录的http页面的问题 : 发信站: BBS 未名空间站 (Thu Oct 8 19:20:51 2015, 美东) : 目的是想获取router的一些即时的信息,但是这个router不支持snmp,现在想到的只有 : 从http页面用wget(或者curl)搞。当然是有大量的相似的router,所以必须自动化。 : 但是搞不定这种登录的情形。比如登录页面是http://172.16.0.1/login/,需要获取数据的页面是http://172.16.0.1/diagnostics/。我先用wget从http://172.16.0.1/login/保存一个cookies.txt,同时加了--keep-session-cookies选项。对比了直接从浏览器的cookie,这个获取的cookies.txt内容一模一样。 : 但是下一步就不行了。我用了--load-cookies,然后再用--post-data把http://172.16.0.1/diagnostics/页面form中input的参数pass过去,仔细检查过,没有typo。但是就是获取不到登录后的信息,wget返回的还是未登录前的http文件。 : 看了一下这个页面的source,好像有一些javascript函数,还有把密码和一段string一 : 起sha256加密,还有form的action函数是未知的。
|
A*****o 发帖数: 222 | 4 一定要用wget吗?可能要算算javascript怎么做的。
否则可以用phantomJS。 |