我需要自动提取产品目录,我们是授权经销商。这家公司是 Ingram Micro,规模很大,但他们没有提供简单的方法(如 Web 服务)来查询他们的目录和库存,所以到目前为止,我们每天都在使用 LWP::UserAgent 提取它,用于我们的在线商店数据库。
最近,他们更改了他们的网站,我无法检测到阻止我的 Perl 脚本成功登录的东西。如果我直接在浏览器上尝试,我会成功登录,但如果我尝试从 Perl 提交表单,我会再次获得登录页面(就像登录不成功)。
他们的网站是在 AspNet 上制作的,并且充满了 ASP 生成的隐藏表单字段。起初,我正在做自己的“蜘蛛”来获取登录页面,读取所有隐藏字段值并将它们与用户名和密码一起包含在我的 POST 登录请求中,但现在,在这个问题之后,我开始使用 WWW: :Mechanize 执行请求并正确自动执行该任务。
但是,不是 WWW::Mechanize 或 LWP::UserAgent 能够成功登录。
我什至尝试查看浏览器和服务器之间的确切 HTTP 对话,并在我的自动请求中包含相同的确切标头以及正确的 POST 内容,甚至这样做我从 Perl 登录不成功,从 Perl 登录成功浏览器。
我真的很绝望,我无法检测到问题,如果没有此目录更新,我们将无法运行商店。
您可以在此处查看登录页面:https ://www.imstores.com/ingrammicromx/
请,如果有人有类似问题的经验,或者有人可以查看该页面并检测浏览器与 WWW::Mechanize 请求不同的原因,请告诉我。
谢谢你。