php - 如何用curl/wget或者其他方式抓取多次302重定向并要求登录的网页?

 hengldkslf 发布于 2022-11-29 18:37

大家好!
我有一个问题向大家请教。
curl我不是很熟,以前用过几次都是直接抓取不需要验证的html网页。
这次我想抓取的页面是:
这个:"https://cares.web.alcatel-lucent.com/cgi-bin/fast/view.cgi?AR=1-6620492"
但是如果在浏览器里访问这个网页的时候,会被重定向到一个SSO验证页面:"https://intranetlogin.web.alcatel-lucent.com:1040/siteminderagent/SmMakeCookie.ccc?SMSESSION=QUERY&PERSIST=0&TARGET=$SM$HTTPS%3a%2f%2fcares%2eweb%2ealcatel-lucent%2ecom%2fcgi-bin%2ffast%2fview%2ecgi%3fAR%3d1-6620492"
如下图所示:

在输入用户名和密码后可以进入内容页面。

我本来想用Linux下的curl命令或者wget命令来抓,查了网上很多资料,有的说curl用-L参数可以跟踪重定向;用-u选项提供用户名和密码进行授权。
但是我用以下命令仍然不能得到验证后的内容页面。
curl -v -k -u myuser:mypass -L "https://cares.web.alcatel-lucent.com/cgi-bin/fast/view.cgi?AR=1-6620492"

然后我用winshark抓了一个浏览器(本地机器IP为192.11.23.2)和代理服务器(135.251.33.31:80)之间的包(这里好像不能上传附件,请从这里:"http://maru.tech:8888/browser_proxy.pcap"下载。)。

在这个文件中发现第300和第436个包是两个302 Found的重定向包,所指向的地址分别是:
"https://intranetlogin.web.alcatel-lucent.com:1040/siteminderagent/SmMakeCookie.ccc?SMSESSION=QUERY&PERSIST=0&TARGET=$SM$HTTP%3a%2f%2fcares%2eweb%2ealcatel-lucent%2ecom%2fcgi-bin%2ffast%2fview%2ecgi%3fAR%3d1-6620492"

"https://intranetlogin.web.alcatel-lucent.com:1040/login/login_login_intranet1_https_cares.html?TYPE=33554433&REALMOID=06-74ffb716-1721-4d9b-84ea-99126b91c132&GUID=0&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=$SM$oVcoNP6ZmVxXmgw%2bkWmUFhjiqFpqn%2btBGj6adK2eBdxXbebN%2fWEZ2XkXuJ787kVm&TARGET=$SM$HTTP%3a%2f%2fcares%2eweb%2ealcatel-lucent%2ecom%2fcgi-bin%2ffast%2fview%2ecgi%3fAR%3d1-6620492"

而第298、431和747分别是三次HTTP请求,请求的地址分别是:
"http://cares.web.alcatel-lucent.com/cgi-bin/fast/view.cgi?AR=1-6620492"
"http://cares.web.alcatel-lucent.com/cgi-bin/fast/view.cgi?AR=1-6620492&SMSESSION=NO"
"http://cares.web.alcatel-lucent.com/cgi-bin/fast/view.cgi?AR=1-6620492"

请问这样网页应该如何用命令或者程序登录并抓取呢?
如果Linux下的curl或者wget做不到的话,用php或者perl能做到吗?

希望得到大家的帮助!
谢谢!

2 个回答
  • curl的-u参数是进行HTTP基本验证的,这种网页表单提交的并不是基本验证。

    2022-11-29 18:40 回答
  • php 有个 get_headers。从Location里可以获取重定向的地址

    2022-11-29 18:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有