peteurjah/email-crawl

PHP 电子邮件网络爬虫。使用 curl 和命令行界面从网站提取电子邮件。

1.0 2022-05-05 15:57 UTC

This package is auto-updated.

Last update: 2024-09-05 21:03:35 UTC


README

PHP 电子邮件网络爬虫,是一个简单易用的类,使用 curl 和命令行界面从网站提取电子邮件地址。它还具有从初始目标网站发现的网站链接中深度提取电子邮件的功能。

安装

通过 Composer 安装非常简单

composer require peterujah/email-crawl

基本用法

初始化电子邮件爬虫实例

$craw = new EmailCrawl("https://example.com", 200);

启动电子邮件爬虫扫描

$craw->craw()

获取扫描响应并返回 CrawlResponse 实例

$response = $craw->getResponse();

以新行分隔响应电子邮件

$data = $response->inLine();

以逗号分隔响应电子邮件

$data = $response->withComma();

以数组形式获取响应电子邮件

$data = $response->asArray();

打印响应电子邮件

$response->printCommandResult($data);

将响应电子邮件保存到文件。这将结果保存为 json 字符串

$response->save("/path/save/craw/");

将响应电子邮件保存到文件。如果传递了字符串数据,则将其保存,否则将结果保存为 json 字符串

$response->saveAs("/path/save/craw/", $data);

示例

创建一个名为 craw.php 的文件,在文件中添加以下示例代码。使用此示例,您可以从 命令行、浏览器或 php shell_exec 直接运行您的爬虫。

error_reporting(E_ALL);
ini_set('display_errors', '1');
require __DIR__ . '/plugins/autoload.php';
use Peterujah\NanoBlock\EmailCrawl;
$target = "https://example.com/contact";
$limit = 50;
if(!empty($argv[1])){
    if(filter_var($argv[1], FILTER_VALIDATE_URL)){
        $target = $argv[1];
        $limit = $argv[2]??50;
    }else{
        $req = unserialize(base64_decode($argv[1]));
        $target = $req["target"];
        $limit = $req["max"]??50;
    }
}
$craw = new EmailCrawl($target, $limit);
$response = $craw->craw()->getResponse();
$data = $response->inLine();
$response->printCommandResult($data)->saveAs(__DIR__ . "/craw/", $data);

通过命令行界面执行爬虫,运行以下命令

php craw.php https://google.com 50

通过 php shell_exec 执行爬虫,创建一个名为 exec.php 的文件并添加以下示例脚本。注意:将 PHP_SHELL_EXECUTION_PATH 修改为您的 php 可执行路径。完成后,导航到 https://mycraw.example.com/exec.php

define("PHP_SHELL_EXECUTION_PATH", "path/to/php");
$crawOptions = array(
    'target' => 'https://example.com',
    'max' => 50,
);
$crawRequest = base64_encode(serialize($crawOptions));
$crawScript =  __DIR__ . "/craw.php";
$crawLogs =  __DIR__ . "/craw_logs.log";
shell_exec(PHP_SHELL_EXECUTION_PATH . " " . $crawScript . " " . $crawRequest ." 'alert' >> " . $crawLogs . " 2>&1");

注意

建议在命令行界面运行此代码以获得更好的性能。