rvalitov/backlink-checker-php

验证远程网站上预定义的链接列表是否存在且正确(用于SEO)。使用简单且启用JavaScript的网页引擎进行抓取。

2.1.0 2023-05-31 21:36 UTC

This package is auto-updated.

Last update: 2024-09-16 12:07:20 UTC


README

PHP version icon License icon Platform icon Codacy Badge Codacy Badge Quality Gate Status Code Smells Maintainability Rating Security Rating Bugs Vulnerabilities Reliability Rating Technical Debt PHP 7.4 Build Test PHP 8.0 Build Test PHP 8.1 Build Test PHP 8.2 Build Test Linux Build Test Windows Build Test Mac Build Test

Backlink Checker 的想法

Social preview

在SEO中处理反向链接是一个简单的任务。有几个工具可以检查或搜索反向链接。与其他工具不同,我们不会扫描互联网上的所有可能网站,也不会分析Google搜索结果以找到您网站的反向链接。我们只验证您已知的反向链接列表。您可以通过以下方式之一获得反向链接列表:

  • 您购买反向链接并收到捐赠网页列表
  • 您通过在论坛、第三方网站等发布来生成反向链接
  • 您的SEO专家或公司为您工作,并展示包含反向链接作为SEO策略之一的报告

当您拥有这样的捐赠网页列表时,您需要确认它们确实包含您网站所需的反向链接。此外,您需要定期验证此列表,以监控反向链接是否仍然存在且没有被删除。因此,此包将帮助您完成这些工作。它允许检查固定的反向链接,例如 https://example.com,并使用搜索模式,例如 *.example.com 以及许多其他使用 正则表达式

浏览器抓取模式

简单模式

简单模式不支持JavaScript;它需要最小依赖,运行速度快,可在共享托管上使用。但它只适用于简单或静态HTML,例如由Joomla、WordPress或Drupal生成的HTML。它不会在需要启用JavaScript的浏览器的网站上找到反向链接,例如使用Laravel、Yii、React等构建的网站。

Chromium(启用JavaScript)

我们使用 Chromium无头模式 进行启用JavaScript的浏览。这种方法允许解析任何网站,这是推荐的模式,但它会占用服务器上更多的资源,并需要更多时间来配置服务器。

如何安装

步骤 1. 通过Composer添加包

您必须安装 Composer。运行以下命令

php composer require rvalitov/backlink-checker-php:^2.0.0

在这里我们使用版本2.0.0或更高版本,支持PHP 8.0和最新版本的依赖项。如果您想使用更早的版本,请检查1.x.x版本。

1.x.x版本中的一些依赖项不再受支持。因此,我不得不转向社区驱动的分支。结果,这些分支没有发布到composer库中,并且有“dev”状态。要使用它们,您需要将以下两个仓库添加到您的 composer.json 文件中,以便Composer知道在哪里查找它们。

"repositories": [
    {
      "type": "git",
      "url": "https://github.com/zoonru/puphpeteer.git"
    },
    {
      "type": "git",
      "url": "https://github.com/zoonru/rialto.git"
    }
  ]

此外,请添加以下配置(例如,在“repositories”部分之前或之后),以便Composer可以使用包的“dev”版本

"minimum-stability": "dev",
"prefer-stable": true

然后运行更新

php composer update

步骤 2. 安装Chromium

注意:如果您不需要Chromium模式,可以跳过此步骤。

您需要先安装以下包,以使Chromium工作。

对于Debian/Ubuntu

apt-get update
apt-get install gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget

您必须安装Node.js。如果尚未安装,请使用官方手册进行安装。然后运行以下命令来安装Chromium

npm install

步骤3:使用Autoload

在您的源PHP文件中包含autoload.php,例如

<?php
require __DIR__ . '/vendor/autoload.php';

如何使用

首先,包含依赖项

<?php
require __DIR__ . "/vendor/autoload.php";

use Valitov\BacklinkChecker;

然后决定使用哪种模式,对于Chromium模式使用

$checker = new BacklinkChecker\ChromeBacklinkChecker();

或者如果您想要一个没有JavaScript支持的简单模式,则使用

$checker = new BacklinkChecker\SimpleBacklinkChecker();

使用所需模式对所需URL进行扫描(使用PCRE模式语法

$url = "https://example.com";
$pattern = "@https?://(www\.)?mywebsite\.com.*@";
$scanBacklinks = true;
$scanHotlinks = false;
$makeScreenshot = true;

try {
    $result = $checker->getBacklinks($url, $pattern, $scanBacklinks, $scanHotlinks, $makeScreenshot);
} catch (RuntimeException $e) {
    die("Error: " . $e->getMessage());
}

函数getBacklinks具有以下附加选项

  • $scanBacklinks - 如果设置为true,则扫描回链(<a>标签的href属性的文本);否则不执行扫描。
  • $scanHotlinks - 如果设置为true,则扫描热链<img>标签的src属性的文本);否则不执行扫描。
  • $makeScreenshot - 如果设置为true,则我们还会对视口进行截图;否则不生成截图。此选项仅在Chromium模式下有意义(默认视口大小为800 x 600像素,图像格式:JPEG,图像质量:90,图像编码:二进制);对于简单模式,此选项被忽略。

现在我们应该检查$result,如果函数成功

$response = $result->getResponse();
if ($response->getSuccess()) {
    $links = $result->getBacklinks();
    if (sizeof($links) > 0)
        //Backlinks found
    else {
        //No backlinks found
    }
} else {
    //Error, usually network error, or server error
    die("Error, HTTP Code " . $response->getStatusCode());
}

函数$result->getBacklinks()返回一个对象数组,描述了回链。每个对象支持以下函数

  • getBacklink返回string,回链 - 匹配目标域的精确URL;
  • getTag返回string,用于回链的标签,可以是aimg
  • getTarget返回stringtarget属性的文本;
  • getNoFollow如果回链有nofollow属性则返回true
  • getAnchor返回string - 链接的锚点,例如,<a>标签的内联文本。此文本以纯文本格式返回,所有HTML标签都被删除。

$response对象支持以下函数

  • getUrl返回string,分析过的URL
  • getStatusCode返回intHTTP状态码,或者在出现网络错误时返回0-1
  • getScreenshot返回string,二进制格式的截图。如果未进行截图或不可用,则字符串为空。如果您想在网页上显示此截图作为图像,则应首先将其保存到磁盘,并使用链接引用它,或者将其编码为base64并直接插入网页中。在这种情况下,您可以使用类似以下的功能:
$base64_image = "data:image/jpeg;base64," . base64_encode($response->getScreenshot());

注意。如果您在包含截图的对象上使用json_encode函数,则此截图将自动转换为base64格式。

示例

示例可在GitHub上的专用项目中找到,网址为https://github.com/rvalitov/backlink-checker-php-demo。测试文件位于tests文件夹中。

系统需求

需要PHP 7.4+,并以下扩展:

反馈

非常感谢您的反馈。如果您希望看到本项目的新功能,请在问题跟踪器中发布您的想法和功能请求。

支持或联系

遇到问题了吗?可能已经在问题跟踪器中有人报告了类似问题。如果您在那里找不到您的问题,请在那里添加您的问题。