2

我正在尝试从受 shibboleth 身份验证保护的页面上刮取数据。我无法让 cURL 和 webisoget 正常工作。所以,我正在尝试 wget,因为我认为我可以通过我的证书并获取我想要的页面。但是,我也遇到了麻烦,我很难找到有关我的问题的文档。

这是我试图执行的 wget 命令:

>wget --no-check-certificate --certificate=www.washington.edu.crt https://www.washington.edu/cec/i/INFO200A2821.html

这是该命令返回的内容:

SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = c:/progra~1/wget/etc/wgetrc
--2011-05-28 00:32:37-- https://www.washington.edu/cec/i/INFO200A2821.html
解决 www.washington.edu... 140.142.16.69, 140.142.11.167, 140.142.15.8
连接到 www.washington.edu|140.142.16.69|:443... 已连接。
警告:无法验证 www.washington.edu 的证书,由 `/C=ZA/ST=Wes 颁发
tern Cape/L=开普敦/O=Thawte Consulting cc/OU=认证服务部/
CN=Thawte 高级服务器 CA/emailAddress=premium-server@thawte.com':
  遇到自签名证书。
HTTP 请求已发送,等待响应... 200 OK
长度:807 [文本/html]
保存到:`INFO200A2821.html.2'

100%[=======================================>] 807 --.-K/s 0秒内

2011-05-28 00:32:38 (6.78 MB/s) - 'INFO200A2821.html.2' 已保存 [807/807]

但是,即使我收到一个页面,它也不包含我希望抓取的信息。返回的页面包含一个在加载时自动提交表单的表单。该表单包含 pubcookie 和 relay_url 的隐藏输入字段。

使用我的凭据登录时,我可以访问该页面。但是,我正在努力实现自动化并获取信息。

4

1 回答 1

1

我不确定你可以用 wget 做到这一点。Shibboleth 是 SAML Web SSO 配置文件的实现,它希望您有一个有效的会话来访问受保护的资源。如果没有有效的会话,它会将您重定向到 WAIF 页面,以便您选择适当的身份提供者。在您可以访问资源之前,必须执行一系列步骤。

您可以尝试使用Perl 的Mechanize.pm之类的东西来自动执行身份验证过程,然后检索受保护的资源。

于 2011-07-07T18:56:40.520 回答