使用安全登录进行 PHP 网站抓取

2023-12-13

我正在尝试减少我的一位经销商的每种产品的库存数量。他们不知道如何导出这些数据。所以我想知道是否有人可以帮助我指明如何使用 PHP 抓取必须登录才能获取数据的网站的正确方向?它不是一个使用 SSL 的安全站点。

感谢您的任何提示,

克里斯·爱德华兹


到达您想要的地方的最简单方法是利用cURL。 cURL 的基本功能是,它允许您根据需要进行配置的 HTTP 请求并接收响应。这可以根据您的需要以不同程度的细节来完成。

您想要做的基本上是发出一个 HTTP 请求来获取您想要的页面并从响应的 HTML 中抓取数据。这可能很容易做到,但就您的情况而言,您需要克服一些障碍。

我假设“必须登录”意味着您必须先通过一个登录表单才能抓取任何内容。只需您的一点帮助,cURL 就可以伪造登录。

首先,您需要使用 cURL“提交”登录表单,就像手动提交一样。为了确保正确,您需要查看浏览器在手动提交表单时发出的 HTTP 请求,并使用 cURL 构建相同的请求。要详细查看 HTTP 请求,您可以使用 Firebug、Chrome 的开发人员工具或绝对精彩 Fiddler 调试代理.

提交有效的登录表单后,服务器很可能会向您发送一个 cookie,用于在后续请求中对您进行身份验证。该 cookie 将成为服务器 HTTP 响应标头的一部分(Set-Cookie标题)。您需要记住该 cookie 的值,并包含Cookie后续抓取到服务器时的标头——本质上,您正在做的事情与您登录时浏览器所做的完全一样。

最后,您可能需要多次往返才能找到目标。也许您需要抓取的 URL 事先并不知道,并且您需要抓取“列表”页面以找出要抓取的 URL 的某些可变部分。这可以通过简单地分步骤解决问题来解决:首先抓取“列表”页面,找出您需要的内容,然后抓取您真正想要的“详细信息”页面。

我没有提供任何代码,因为网络上有大量的 cURL 教程,但我相信了解计划是什么将使您的工作变得更加容易。


¹另一种(更快,但粗略)的方法是您自己登录,查看您获得的 cookie 的值,然后将其粘贴到您的 scrape 请求中。好处是您不再需要使用 cURL 伪造登录;缺点是,每次使用您的工具之前,必须有人手动登录并向您的工具提供凭据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用安全登录进行 PHP 网站抓取 的相关文章

  • 有没有办法重置特定类的所有静态属性?

    您可能知道 静态属性使测试变得困难 有没有办法将特定类的所有静态属性重置回其初始状态 理想情况下 这不需要为每个类定制代码 但可以通过继承以通用方式使用 或者完全从类外部使用 请不要回复 不要使用静态属性 之类的内容 谢谢 假设您正在使用
  • UNIX时间记录时区吗?

    我想问一下UNIX时间 UNIX时间是否记录时区 我将托管从美国芝加哥移至 JST 问题是我的整个 MySQL 数据库都有 UNIX 时间 芝加哥 美国时区 的记录 我有一个 PHP 代码来显示之前的时间 例如 3 天前 昨天等 当我搬到新
  • WordPress 中的 jQuery.post()

    我目前正在为 Wordpress 编写一个聊天框插件 该插件使用 jQuery post 方法将数据发送到 php 文件 以便将输出写入 html 文件 该文件又将使用 jQuery 加载到聊天窗口 在我用来将聊天日志写入html文件的ph
  • 如何显示多维数组第二层的 json 值?

    解决此代码时遇到问题 这些是数组 Array 0 gt stdClass Object id gt 1 name gt delux price gt 213 description gt tv gt 0 breakfast gt 0 par
  • 如何覆盖 suhosin 最大值?

    suhosin 正在过滤一个重要的 GET 参数 当以下方法不起作用时 如何覆盖 suhosin public html php ini suhosin suhosin get max value length 2048 将 suhosin
  • 登录后,Codeigniter 会话数据在其他页面不可用

    因此 我设置了一个登录页面来验证用户的凭据 然后设置 codeigniter 会话数据 email 和 is logged in 以及其他一些项目 登录后第一页 数据即可访问 在该页面之后 我无法再访问会话数据 事实上 如果我尝试重新加载第
  • PHP中特殊字符的转换

    我已经尝试了很多功能 但我根本无法弄清楚这一点 无论如何 正确的方法 在称为描述的表单字段中 我可以期待各种字符 在将它们提交到数据库之前 需要将它们格式化为 HTML 实体 现在 我的代码 formdesc htmlentities PO
  • 简单的 preg_replace 返回 null

    为什么这个非常简单的 preg replace 返回 null preg replace s test test 这个想法是删除空格 您忘记添加分隔符 preg replace s test test 而且最好使用 s 代替 s 在你的模式
  • 在这个页面中,悬停不起作用,我不知道为什么,而且页脚也没有占用 100% 宽度,即使我已经给了它

    我的编码是否不正确 或者悬停和页脚有什么问题 我需要知道 php 邮件程序是正确的还是我有错误 我无法找到错误 因为邮件功能在本地服务器上不起作用
  • 如何将日期/时间从 24 小时格式转换为 12 小时 AM/PM? [复制]

    这个问题在这里已经有答案了 我从数据源中获取以下格式的日期和时间 19 24 15 06 13 2013 我需要将其转换为 12 小时 AM PM 格式 不带秒 所以上面的时间是晚上 7 24 日期应保留为 mm dd yyyy 格式 在
  • 验证数据库匹配中的 $_GET id 是否足够安全?

    我的网站上有 2 个页面 一个是 index php 索引页面列出了数据库中存在的所有帖子 另一个页面是 post php 当单击索引页面上的特定帖子时 帖子页面显示单个帖子 现在我用来列出 index php 上所有帖子的代码是 post
  • Kohana_Exception [ 0 ]:需要有效的 cookie salt。请设置 Cookie::$salt

    我正在学习本教程 http kowsercse com 2011 09 04 kohana tutorial beginners http kowsercse com 2011 09 04 kohana tutorial beginners
  • 执行数组内的函数

    是否可以从数组内部执行匿名函数 也在数组内部定义 return execute function logic 或者我应该在外面定义它然后再调用它 从技术上讲 您可以将该函数括在括号中并像这样调用它 return function retur
  • 代码点火器 JSON

    你好 我使用 codeigniter 然后我从控制器中的数据库中回显输出 然后在我的视图文件中执行以下操作 但它没有显示任何内容 S 我的模型文件 function forumList this gt db gt select oversk
  • 为什么 mysqli num_rows 总是返回 0?

    我在使用 mysqli 获取要返回的行数时遇到了问题 尽管确实有一些结果 但我每次都只是得到 0 if stmt mysqli gt prepare SELECT id title visible parent id FROM conten
  • 通过 PHP 使用 Eclipse BIRT 报表设计器

    我想在 php web 项目中使用 Birt Reports 因此我安装了推荐的 Java Bridge 和 BIRT Runtime 将 JavaBridgeTemplate621 war 和 birt war 移至我的 Tomcat 之
  • PHP 5 的 SQLite 编译设置是什么?

    SQLite 3 7 附带了新的预写日志记录 WAL http www sqlite org wal html并且有很多设置可以被配置 http www sqlite org compile html 但是 似乎没有任何方法可以改变任何事情
  • PHP邮件功能有时可以工作

    我正在编写一个脚本 需要通过PHP邮件功能发送电子邮件 如下所示 它在向 gmail 帐户发送电子邮件时有效 但在我的域中的帐户却无效 我们正在运行 Exchange 服务器 截至目前 电子邮件是从 www server 发送的 有谁知道
  • 学说“没有命名的协会”

    将我添加到无法找出其学说映射出了什么问题的人列表中 我正在模拟国际象棋Game与一对多Halfmoves 有任何想法吗 DDL create table game game id int primary key create table h
  • 如何以 Magento 方式实现库存过滤器?

    在我的 magento 网站上可以看到缺货的产品 我想要在分层导航中添加一个自定义过滤器 其中显示 排除缺货 当客户单击它时 应该隐藏缺货产品 默认情况下 我在 系统 gt 配置 gt 目录 gt 库存 下启用显示 显示缺货产品 即我希望客

随机推荐

  • 通过互联网的 RMI iiop

    我正在尝试获取 OracleRMI IIOP 示例工作 但我在 Netbeans 中执行此操作时遇到问题 我的代码如下 界面 import java rmi Remote import java rmi RemoteException pu
  • 为什么在 while 循环之后我只获得最后一行值?

    这是我正在阅读的文件 Log1 Time Src id Des id Address 0 34 56 x9870 2 36 58 x9872 4 38 60 x9874 6 40 62 x9876 8 42 64 x9878 Log2 Ti
  • 如何将 FacesMessage 从支持 bean 附加到 ui:repeat 中的特定字段?

    我有一个具有可变数量输入元素的表单 如下所示
  • 创建文件后发生文件共享冲突?

    因此 我尝试创建一个 txt 文件 然后向其中写入一些愚蠢的数据 但我遇到了共享违规 我感觉这可能是因为我试图在创建文件后直接为其创建 StreamWriter 但这没有意义 所以我有点失落 我已经尝试删除类中除错误行之外的所有其他 Str
  • PHP 脚本不会在后台运行

    我正在尝试在后台运行 php CLI 脚本 但它无法运行 它的状态为 已停止 SIGTOU 尝试写入输出 以下是详细信息 Mac OS X Lion 10 7 2 PHP 5 3 6 与 Suhosin Patch cli 构建时间 201
  • 为什么我的 CodeIgniter 表单验证不起作用?

    我正在尝试在使用表单助手创建的简单联系表单上设置验证 根本不会发生任何验证 怎么了 在下面的代码中 无论在表单中输入什么内容 good 关键字始终显示 并且从不显示通过 set value 设置的保存值 控制器 Contact functi
  • CasperJS 不能要求下划线

    我在用着CasperJS运行自动化前端测试 但在我的测试中使用其他 npm 模块时遇到了问题 我知道patchRequire但是我相信这只能在测试环境之外调用 因为测试运行程序补丁会自动需要 我确实包含了它 但结果是一样的 它说找不到该模块
  • 更改 JavaScript Prompt() 显示的格式和文本?

    我正在使用 JavaScriptprompt 功能 var favorite prompt What is your favorite color RED 我使用的是 IE 7 打开的提示框有一个标题栏 上面写着 资源管理器用户提示 还有更
  • constexpr 与 const 对比 constexpr const

    变量上的 const 与 constexpr 这家伙关于 constexpr 的说法是正确的if double被使用 或float当然 但是 如果您将 var 类型更改为double对于像 int char 等整数类型 一切正常 为什么会发
  • C#调用WinApi?

    我正在尝试调用 WinAPI 函数DeviceIoControl在 C 中使用代码IOCTL DISK SET DISK ATTRIBUTES并传递结构SET DISK ATTRIBUTES 我正在尝试用这段代码来做到这一点 const u
  • 如何将 setup.py 替换为 pyproject.toml 以获取本机 C 构建依赖项?

    我碰到this用于创建 C 编译版本的小项目布莱克 斯科尔斯python 中要使用的函数 虽然示例代码似乎是今年7月发布的 但似乎使用setup py旧版构建之外的构建类型已被弃用 任何编译失败 先抱怨缺失MS C 14编译器 这不是真的
  • NSString 反斜杠转义

    我正在开发一个 iPhone OS 应用程序 该应用程序向 Web 服务发送 xml 请求 为了发送请求 xml 被添加到 NSString 中 这样做时我遇到了一些引号问题 和反斜杠 在 xml 文件中 需要转义 是否有需要转义的字符的完
  • R 中的 Bootstrap 置信区间

    我是 R 新用户 在使用启动包时遇到问题 我想要做的就是使用 bootstrapping 来生成围绕数字向量均值的置信区间 例如 x lt rnorm 100 1 5 有小费吗 以下还不够吗 library boot x lt rnorm
  • 了解 rowwise() 和 c_across()

    您好 任何人都可以提供外行人的解释 为什么这两种尝试计算分数的行平均值的方法效果不同 谢谢 library tidyverse var1 lt rnorm 100 var2 lt rnorm 100 var3 lt rnorm 100 df
  • 如果 URL 包含特定字符串,则 htaccess 重定向

    我该如何写一个 htaccess如果 URL 包含某个单词 则重定向规则 例如如果它包含foobar然后重定向到index php RewriteCond REQUEST URI foobar RewriteRule index php o
  • 如何写入 Python 子进程的标准输入?

    我正在尝试编写一个启动子进程并写入子进程标准输入的Python 脚本 我还希望能够确定子进程崩溃时要采取的操作 我试图启动的进程是一个名为nuke它有自己的内置 Python 版本 我希望能够向其提交命令 然后在命令执行后告诉它退出 到目前
  • 如何在 Java 中创建唯一 ID? [复制]

    这个问题在这里已经有答案了 我正在寻找在 Java 中创建唯一 ID 作为字符串的最佳方法 任何指导表示赞赏 谢谢 我应该提到我正在使用 Java 5 创建一个UUID String uniqueID UUID randomUUID toS
  • Chrome 调试器 Api 附加扩展错误

    Task 使用调试其他扩展Chrome 调试器 API 预期输出 其他已安装扩展发出的 http 请求日志 Method 在 python 设置标志中使用 selenium 运行 chrome webdriverchromeopts add
  • 如何使用 VBScript 从驱动器号获取硬盘号

    如何使用 VBScript 从驱动器号获取硬盘号 先感谢您 Remou 关于 WMI 的看法是正确的 只是需要让它变得更混乱一点 如果有更简单 更好的方法来执行此操作 一点也不会感到惊讶 但此脚本至少应该为您提供一个良好的起点来完成您需要的
  • 使用安全登录进行 PHP 网站抓取

    我正在尝试减少我的一位经销商的每种产品的库存数量 他们不知道如何导出这些数据 所以我想知道是否有人可以帮助我指明如何使用 PHP 抓取必须登录才能获取数据的网站的正确方向 它不是一个使用 SSL 的安全站点 感谢您的任何提示 克里斯 爱德华