用 PHP 中的 dorks 抓取 google

问题描述 投票:0回答:2

我正在尝试使用代码中提供的 dork 从 Google 抓取 URL。

现在我正在使用 cURL,但它说 “curl_init() 处于未定义函数中”

到目前为止我得到了:

 //This is the Pattern for URL finding
$pattern = "~^(http|ftp)(s)?\:\/\/((([a-z0-9]{1,25})(\.)?){2,7})($|/.*$)~i"; 
//Enter your dork here.
$dork = "inurl: login.php";
//Set the Useragent
$ua = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311";
//Initialize cURL
$ch = curl_init();
$url = "http://www.google.com/search?q=".$dork;
$timeout = 10;
curl_setopt($ch,CURL_OPT, $url);
curl_setopt($ch,CURLOPT_USERAGENT,$ua);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);

$exec = curl_exec($ch);
$contents = curl_getinfo($ch);
//curl_close($ch);

//Set empty url array
$urls = array();
//Find urls on page you just grabbed ^
preg_match_all($pattern, $contents, $matches);

//Assign the urls to the empty array urls
    foreach ($matches[0] as $match)
    {
        $urls[] = "{$match}";
    }

//Remove any duplicates in url array
$vurls = array_unique($urls);
//take out spaces
$urlStr = implode("", $urls);

//count number of unique urls
$count = count($vurls);

//Writing to text file
$fh = fopen('wp.txt', 'w');
fwrite($fh, $urlStr);
fclose($fh);

//Echoing # of urls found.
echo "Done. Found {$count} sites.\n";

我不知道出了什么问题,我也试图让它抓取多个页面。 但想知道我应该如何解决这个问题。

如果有人能给我指出正确的方向,那将非常有帮助,我不需要用勺子喂食。

php web-scraping curl
2个回答
2
投票

您需要在 PHP 中启用 cURL。为此,您需要在

php.ini
中找到这一行并取消注释:

;extension=php_curl.dll

这样做:

extension=php_curl.dll


(来源:joomlashine.com


如果您使用的是 Windows 7 盒子...

  1. 确保

    php.ini
    php 引擎使用的是您认为的那个。

  2. 确保

    extension_dir
    中的
    php.ini
    正确设置为ext文件夹。

  3. 确保

    extension=php_curl.dll
    中的
    php.ini
    未注释。

  4. 确保

    %windir%\system32
    文件夹中有两个文件:

     libeay32.dll
     ssleay32.dll
    

如果没有,需要从php文件夹中复制这两个文件


如果您使用的是 Ubuntu 机器,您可能需要这样安装 cURL:

apt-get install php5-curl
/etc/init.d/apache2 restart

然后重新启动 Apache 服务器。使用此代码检查 cURL 函数是否已加载。

<?php
    phpinfo();
?>

1
投票

PHP 不知道该函数的唯一原因

curl_init
是它没有配置 cURL 支持 (https://www.php.net/manual/en/curl.installation.php)。

您可以检查

phpinfo()
的输出来确认这一点。

© www.soinside.com 2019 - 2024. All rights reserved.