一种“新手问题”,以部分确认/纠正我的理解: 我想实施一些自动网站探测包括。登录,我不想实际拉取任何数据。从早期的工作中,我记得curl和仅检查URL可用性(eval HTTP响应代码,例如200或不),这很好地工作。 现在任务也在登录 - 但我无法让它工作,并且怀疑这是否按预期工作。经过一段时间的实验和搜索WWW后,我找不到明确的答案 - 所以我的希望在这里:-)网络会话卷曲探测
最初我的想法是使用脚本,只是在里面放入curl POST命令,以防万一与饼干选项,如:
$ curl -s -w "%{http_code}" -o /tmp/tge-HTML.out -b /tmp/tge-cookies -c /tmp/tge-cookies -F "username=bla&passwd=blub&Submit=Login" http://some.url
(我用的是HttpFox确定POST参数和我大多肯定有他们的权利)
然后,我整个文件中搜索/tmp/tge-HTML.out是否包含“注销”作为我已登录的证明(即使未登录,我总是在所有测试中获得HTTP 200,并且包含各种URL里德)。我发现,在Firefox中登录后,后续的URL包含... & jsessionid = ...当然,我最初不知道 - 所以我尝试了几件事,例如(!命令)来调用卷曲两次在shell脚本,从第一个得到的SessionID,并将其附加到第二网址,如:
$ curl -s -w "%{http_code}" -o /tmp/tge-HTML.out -b /tmp/tge-cookies -c /tmp/tge-cookies -F "username=bla&passwd=blub&Submit=Login" http://some.url
... extract jsessionid from /tmp/tge-HTML.out ...
$ curl -s -w "%{http_code}" -o /tmp/tge-HTML.out -b /tmp/tge-cookies -c /tmp/tge-cookies
http://some.url/...?jsessionid=...
但无论我尝试,我从来没有在任何地方: - | 现在的问题:
如果我做一个基于卷曲-POST,如上面的例子,做我 (通常?)获得完整的HTML页面的响应,就像我看到它 在常规的网络浏览器登录后?
- 看起来我好像真的,但随后一个简单的POST应该做的,它应该包含“注销” ...
- 但是,因为我从来没有得到这个工作,可能是什么问题?
如果我必须做多个HTTP请求,请问 那个使用curl命令的概念就像那样工作吗?什么 卷曲退出时发生?套接字关闭,Web服务器 可能会关闭会话(并且我的jsessionid无效)?
- 如果这种方法不起作用,基于libcurl的概念可能会更好?例如。 phpcurl(只读过它,但从来没有尝试过),我的会议保持在我的PHP脚本,因此连接/会话保持打开等...
- 可能取决于该网站是否使用cookie?
有没有更好的想法如何完成 最初的想法?理想情况下,应该简单一些脚本,但 没有庞大的监控套房
最有可能有许多“取决于......”: - |此外,可能的问题不是100%准确,但任何提示都表示赞赏! :-)
RGDS, TGE