代码之家  ›  专栏  ›  技术社区  ›  irl_irl

使用登录名在PHP中进行屏幕抓取

  •  0
  • irl_irl  · 技术社区  · 16 年前

    四处寻找解决方案,我发现了不同的方法。有些使用regex,有些使用dom脚本或其他。

    我想去一个网站,登录,填写一份表格,然后检查表格是否发送。登录部分是我找不到任何内容的部分。

    有人知道一个简单的方法吗?

    5 回复  |  直到 13 年前
        1
  •  0
  •   Bruce Alderson    16 年前

    您可能想看看Perl的lwp库(我知道它不是php,但对于屏幕抓取、Web单元测试等非常有用):

        2
  •  3
  •   Kurt Payne    16 年前

    我同意莱斯的观点。curl+charles(或fiddler、firefox的篡改数据扩展、wireshark等)是我一直这样做的。我发现的一个技巧是,有些网站需要三步流程:

    1. 首先点击带有get请求的登录页面,以获取任何会话ID、cookie和/或所需字段(例如,net站点具有\u viewstate和\u eventvalidation)。
    2. 一旦你有了这些值,你就可以发布到登录页面。
    3. 最后,请求你想要的任何资源。

    别指望curl的cookie jar和cookie文件能帮上大忙。您最好使用一个简单的regex从头中解析出会话ID和cookie。

    希望这有帮助!

        3
  •  1
  •   Scott Saunders    16 年前

    如果你需要做大量的图形用户界面的工作,你最好使用某种可脚本化的浏览器。如果需要使用PHP,请查看curl: http://us2.php.net/curl

        4
  •  1
  •   Les    16 年前

    我通常做的是点火 charles 在浏览器中完成登录过程并记录原始请求。复制+粘贴请求并将其抛出 fopen curl (根据反应进行一些小调整)。

        5
  •  0
  •   jeff musk    14 年前

    我在这方面有相当的经验。我以前用过卷发,但用它不好玩。特别是很多时候,站点交换XSRF令牌、传递隐藏变量或设置各种cookie。用卷发追踪这一切变得困难。至少对我来说。

    然后我研究了硒,我喜欢它。有两件事-1)安装Selenium IDE(仅在Firefox中工作)。2)安装Selenium RC服务器

    在启动SeleniumIDE之后,请转到您试图自动化的站点,并开始记录您在该站点上所做的事件。将其视为在浏览器中录制宏。然后,您将得到所需语言的代码输出。

    正如您所知,browsermob使用Selenium进行负载测试和自动执行浏览器上的任务。

    我上传了一个PPT,这是我之前做的。这样可以节省你很多时间- http://www.4shared.com/get/tlwT3qb_/SeleniumInstructions.html

    在上面的链接中,选择常规下载选项。