编程语言
首页 > 编程语言> > php – 使用file_get_contents()进行抓取时强制使用桌面版网站

php – 使用file_get_contents()进行抓取时强制使用桌面版网站

作者:互联网

我正在使用FriendsOfPHP / Goutte包抓取网站.一切都很好.当用户将URL粘贴到输入中时,我正在抓取用于打开图形标签(如图像,标题等)的网站.

当用户从移动设备复制URL时,会出现问题,该URL现在是移动URL,如https://m.datpiff.com/tape/818948,并且在该URL上没有开放图标签.

当我访问相同的URL并用www替换子域m时,例如从桌面https://www.datpiff.com/tape/818948,它将我重定向到:http://www.datpiff.com/Chance-The-Rapper-Jeremih-Merry-Christmas-Lil-Mama-mixtape.818948.html.

此桌面URL确实包含开放图标签.

有没有办法让我的服务器强制或欺骗接收服务器将所有URL重定向到桌面版本,以便我可以使用开放图形标签?接收服务器已经重定向到正确的URL,但前提是我直接从桌面上的浏览器输入.

这是我正在使用的代码 – 它很棒.我只需要能够将我正在抓取的URL重定向到桌面版本.

首先,我在我的js中用www替换m,如下所示:

fullurl.replace('m.',"www");

https://m.datpiff.com/tape/818948转换为https://www.datpiff.com/tape/818948

然后在我的PHP代码中我使用这样的东西:

$url_to_scrape = $urltoscrape;
    $client = new Client();

    // Go to the example.com website
    $crawler = $client->request('GET', $url_to_scrape);


    $opengraphImage =$crawler->filterXpath('//meta[@property="og:image"]')->attr('content');
    $title = $crawler->filter('title')->text();

解决方法:

您需要传递cookie以将您重定向到桌面版本:

name    value      domain          path
mredir    0    .www.datpiff.com     /

奇怪的是,如果你替换m.与www.不起作用.
尝试添加桌面用户代理.

标签:php,redirect,opengraph,file-get-contents
来源: https://codeday.me/bug/20190710/1428942.html