如何使用 DOM 通过年龄验证

2023-11-22

我正在尝试从 Steam 商店页面中提取一些图像 URL,例如:http://store.steampowered.com/app/35700/
http://store.steampowered.com/app/252490/

这是我正在使用的代码:

$url = 'http://store.steampowered.com/app/35700/';
$html = file_get_contents($url);
$dom = new domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
  echo $image->getAttribute('src');
}

它在第一个商店页面上运行良好,但第二个商店页面重定向到年龄验证页面,并且脚本从那里返回图像。我需要一种方法让脚本通过年龄验证并访问实际的商店页面。

任何帮助,将不胜感激。

Edit:

这是提交年龄表单时传递到服务器的内容:

snr=1_agecheck_agecheck__age-gate&ageDay=1&ageMonth=January&ageYear=1979

以及它设置的 cookie:

lastagecheckage=1-January-1979; expires=Tue, 03 Mar 2015 19:53:42 GMT; path=/; domain=store.steampowered.com
birthtime=662716801; path=/; domain=store.steampowered.com

Edit2:

我可以使用 cURL 设置 cookie,但 DOM loadHTML 不使用它们,因此我得到与以前相同的结果。我需要一种方法让 loadHTML 使用我设置的特定 cookie,或者另一种方法来获取将使用 cURL 设置的 cookie 的图像 URL。


解决了!这是工作代码:

$url = 'http://store.steampowered.com/app/35700/';

$ch = curl_init();

curl_setopt($ch, CURLOPT_COOKIE, "birthtime=28801; path=/; domain=store.steampowered.com");
curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

$dom = new domDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($result);
$dom->preserveWhiteSpace = false;

$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
  $src = $image->getAttribute('src');
  echo $src.PHP_EOL;
}

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

如何使用 DOM 通过年龄验证 的相关文章

随机推荐

  • Twitter 搜索 (atom) API - 排除转发

    我正在使用 Twitter 的 Atom 搜索 API 现在我用某个词呈现所有 最新的 5 条 推文 但不幸的是 很多人转发了这篇帖子 而我同样的帖子被转发了 5 次 我可以排除转发吗 如果是这样 怎么办 我已经通过添加成功排除转发 排除
  • 如何检查输入文本字段是否仅包含空格?

    在 Javascript 中检查输入文本字段是否为空 不包含任何内容或仅包含空格 的最简单方法是什么 var str document getElementById myInput value if str match s nothing
  • 使用 websocket mod_proxy_wstunnel 进行反向代理

    我的 Web 套接字和反向代理 Apache 有问题 我已升级到最新版本 2 4 5 并加载了模块mod proxy wstunnel httpd conf
  • Rails 3.x 是否有调试工具栏

    I used 机架 错误一年多前 现在我想将它与新的 Rails 3 1 项目一起使用 我尝试安装 master 和 Rails3 分支 但没有成功 也尝试过一些 github 分支但他们也没有工作 有没有具有相同功能的替代方案 附 我已经
  • 使用 T-SQL,从字符串中返回第 n 个分隔元素

    我需要创建一个函数 它将返回分隔字符串的第 n 个元素 对于数据迁移项目 我使用 SQL 脚本将存储在 SQL Server 数据库中的 JSON 审核记录转换为结构化报告 目标是在没有任何代码的情况下交付一个 sql 脚本和该脚本使用的
  • Windows 内存文件系统

    我有一个命令行可执行文件 需要在 Windows XP 上从 Java 运行 它使用文件作为输入和输出 但我想避免文件IO的开销 所以我想到了内存RAM文件系统 NetBSD 有mount mfs 您能推荐最方便的方法吗 您还应该考虑您是否
  • 如何在 F# 中定义 printfn 等效项

    由于我使用 F 进行研究 特别是使用 F 交互式 因此我希望拥有可切换的 调试时打印 功能 I can do let dprintfn printfn F 交互式 说 val dprintfn Printf TextWriterFormat
  • 如何让 xdebug/step-debugging 与 ddev 一起使用?

    我一直在我的 Drupal 项目上使用 ddev 现在想使用 xdebug 这样我就可以使用 PhpStorm 进行逐步调试 或者实际上任何 IDE 都可以 但我似乎无法让它在断点处停止 我试图遵循ddev 文档中的说明但这并没有让我继续下
  • 在 Matlab 中生成包含给定集合中至少一个元素的所有组合

    I use combnk生成组合列表 如何生成始终包含特定值的组合子集 例如 对于combnk 1 10 2 我只需要包含 3 和 或 5 的组合 有没有快速的方法可以做到这一点 好吧 在您的具体示例中 从集合 1 10 中选择两个整数 其
  • 无法更改引导工具提示标题

    我已经浏览了有关堆栈溢出的几篇文章 询问了几乎完全相同的问题 但我在这些问题上发现的内容都没有帮助 我对 JQuery 和 Bootstrap 非常陌生 所以也许我只是错过了一些非常简单的东西 我希望能够在第一次初始化后更改不同元素上的工具
  • 如何将 boost 线程添加到向量中

    我有这样的错误 vector
  • Android ZipInputStream:只有 DEFLATED 条目可以有 EXT 描述符

    在我的 Android 设备上 我需要提取从内容 uri 获取的文件 一个 xapk 据我所知 这是一个普通的 zip 存档 我正在使用这行代码创建 ZipInputStream ZipInputStream zis new ZipInpu
  • *(a++) 给出错误,但 *(a+1) 没有给出错误?其中 a 是数组名称?

    在下面的代码中 void main char a 1 5 3 4 5 6 printf d n a line gives error wrong type argument to increment printf d n a 1 第 4 行
  • Javascript:非阻塞方式等待条件为真

    我有几个 ASP NET UpdatePanel 每个都有一个与同一按钮的服务器端单击事件绑定的 AsyncPostBackTrigger 由于一次只能有一个 UpdatePanel 执行其操作 因此我使用 get isInAsyncPos
  • 理解 std::forward

    为什么编译器无法推断出模板参数std forward I mean include
  • 如何获取 IQueryable.Count 的 ToTraceString

    I use ObjectQuery IQueryable ToTraceString 获取并调整将由 LINQ 执行的 SQL 代码 我的问题是 与大多数 IQueryable 方法不同 IQueryable Count 的定义如下 pub
  • ELF动态加载器符号查找排序

    解析动态重定位时符号查找的搜索顺序是什么 当解析共享库的符号时 加载程序首先在 主可执行文件 中搜索 以让主可执行文件覆盖定义 还是什么 根据我的理解 每个可执行对象都有自己的 查找范围 主可执行文件通常是 全局 查找范围中的第一个对象 这
  • 什么是依赖注入?

    已经发布了几个问题 其中包含有关的具体问题依赖注入 例如何时使用它以及有哪些框架 然而 什么是依赖注入以及何时 为什么应该或不应该使用它 到目前为止我发现的最好的定义是詹姆斯 肖尔 James Shore 创作的一首 依赖注入 是25美元
  • 如何禁用android中网格视图中特定位置的项目点击

    我正在使用网格视图 其中每个单元格使用文本视图 我正在使用 onitemclick 在单击网格单元格时执行某些操作 我想禁用网格视图中特定位置的项目单击 我怎么做 我对 getView 中的特定位置使用了convertView setcli
  • 如何使用 DOM 通过年龄验证

    我正在尝试从 Steam 商店页面中提取一些图像 URL 例如 http store steampowered com app 35700 http store steampowered com app 252490 这是我正在使用的代码