rvalitov / backlink-checker-php
验证远程网站上预定义的链接列表是否存在且正确(用于SEO)。使用简单且启用JavaScript的网页引擎进行抓取。
Requires
- php: ^7.4.20 || ^8.0.7
- ext-json: *
- guzzlehttp/guzzle: 7.*
- kub-at/php-simple-html-dom-parser: ^1.9.1
- nesk/puphpeteer: dev-zoon
Requires (Dev)
- ext-xdebug: ^3.1.0
- phpmd/phpmd: @stable
- phpunit/php-code-coverage: ^9
- phpunit/phpunit: ^9
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-09-16 12:07:20 UTC
README
Backlink Checker 的想法
在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
,用于回链的标签,可以是a
或img
;getTarget
返回string
,target
属性的文本;getNoFollow
如果回链有nofollow
属性则返回true
;getAnchor
返回string
- 链接的锚点,例如,<a>
标签的内联文本。此文本以纯文本格式返回,所有HTML标签都被删除。
$response
对象支持以下函数
getUrl
返回string
,分析过的URLgetStatusCode
返回int
,HTTP状态码,或者在出现网络错误时返回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+,并以下扩展:
反馈
非常感谢您的反馈。如果您希望看到本项目的新功能,请在问题跟踪器中发布您的想法和功能请求。
支持或联系
遇到问题了吗?可能已经在问题跟踪器中有人报告了类似问题。如果您在那里找不到您的问题,请在那里添加您的问题。