Pinterest上的PHP file_get_html - 一些非常奇怪的行为

时间:2016-03-29 18:41:44

标签: php

试图从Pinterest页面中删除一些基本的帐户信息(在我被指控恶意使用之前,我没有抓住别针,它只是竞争对手的研究工具)。

有些帐户可以正常使用file_get_html,其他帐户则返回完全空白的对象,我无法找出原因。我已经使用不同大小的完全随机页面构建了下面的测试代码,以尝试进行一些测试...仍然没有进一步前进。

它使用简单的HTML DOM,这是我的测试代码,试图弄清楚为什么有些不工作。

$pinterestUrl1 = "https://uk.pinterest.com/sfashionality/";
$pinterestUrl2 = "https://uk.pinterest.com/serenebathrooms/";
$pinterestUrl3 = "https://uk.pinterest.com/jenstanbrook/";
$pinterestUrl4 = "https://uk.pinterest.com/homebaseuk/";
$pinterestUrl5 = "https://uk.pinterest.com/thedoifter/";
$pinterestUrl6 = "https://uk.pinterest.com/coolshitibuy/";


$html1 = file_get_html($pinterestUrl1);
$html2 = file_get_html($pinterestUrl2);
$html3 = file_get_html($pinterestUrl3);
$html4 = file_get_html($pinterestUrl4);
$html5 = file_get_html($pinterestUrl5);
$html6 = file_get_html($pinterestUrl6);


echo $pinterestUrl1 . " - "; if (is_object($html1)) { echo "Returns object okay<br/>"; } else { echo "Failed<br/>"; };
echo $pinterestUrl2 . " - "; if (is_object($html2)) { echo "Returns object okay<br/>"; } else { echo "Failed<br/>"; };
echo $pinterestUrl3 . " - "; if (is_object($html3)) { echo "Returns object okay<br/>"; } else { echo "Failed<br/>"; };
echo $pinterestUrl4 . " - "; if (is_object($html4)) { echo "Returns object okay<br/>"; } else { echo "Failed<br/>"; };
echo $pinterestUrl5 . " - "; if (is_object($html5)) { echo "Returns object okay<br/>"; } else { echo "Failed<br/>"; };
echo $pinterestUrl6 . " - "; if (is_object($html6)) { echo "Returns object okay<br/>"; } else { echo "Failed<br/>"; };

结果:

https://uk.pinterest.com/sfashionality/ - Returns object okay
https://uk.pinterest.com/serenebathrooms/ - Returns object okay
https://uk.pinterest.com/jenstanbrook - Failed
https://uk.pinterest.com/homebaseuk/ - Failed
https://uk.pinterest.com/thedoifter/ - Returns object okay
https://uk.pinterest.com/coolshitibuy/ - Returns object okay

我看不出有什么原因导致其中一些返回对象而其他人没有...而且因为它是空白的我甚至不知道从哪里开始调试这种事情。

关于这个的任何想法?感谢

1 个答案:

答案 0 :(得分:1)

简单的HTML DOM解析器具有值为600000的常量MAX_FILE_SIZE,并且您请求的URL具有稍多的HTML。 在包含lib之前,您可以使用一些更大的值定义MAX_FILE_SIZE,这将生成PHP通知,但HTML将被处理。我用以下代码对此进行了测试:

<?php
define('MAX_FILE_SIZE', 6000000); //Will produce notice, but we need to define it

include_once './simplehtmldom_1_5/simple_html_dom.php';

$urls = array(
    'https://uk.pinterest.com/sfashionality/',
    'https://uk.pinterest.com/serenebathrooms/',
    'https://uk.pinterest.com/jenstanbrook/',
    'https://uk.pinterest.com/homebaseuk/',
    'https://uk.pinterest.com/thedoifter/',
    'https://uk.pinterest.com/coolshitibuy/',
);

foreach ($urls as $url) {
    $content = file_get_contents($url);
    $html = str_get_html($content);
    echo $url . ' - ';
    if (is_object($html)) {
        echo 'Returns object okay<br/>';
    } else {
        echo 'Failed<br/>';
    };
}