SerpScraper
v4.0.1
الغرض من هذه المكتبة هو توفير طريقة سهلة وغير قابلة للكشف ، ومقاومة Captcha لاستخراج نتائج البحث من محركات البحث الشعبية مثل Google و Bing.
الطريقة الموصى بها لتثبيت هذا عبر الملحن:
composer require athlon1600/serpscraper " ^4.0 " <?php
use SerpScraper Engine GoogleSearch ;
$ page = 1 ;
$ google = new GoogleSearch ();
// all available preferences for Google
$ google -> setPreference ( ' results_per_page ' , 100 );
//$google->setPreference('google_domain', 'google.lt');
//$google->setPreference('date_range', 'hour');
$ results = array ();
do {
$ response = $ google -> search ( " how to scrape google " , $ page );
// error field must be empty otherwise query failed
if ( empty ( $ response -> error )){
$ results = array_merge ( $ results , $ response -> results );
$ page ++;
} else if ( $ response -> error == ' captcha ' ){
// read below
break ;
}
} while ( $ response -> has_next_page ); لكي يعمل هذا ، ستحتاج إلى التسجيل في خدمات 2CaptCha.com ، والحصول على مفتاح API. يوصى بشدة باستخدام خادم وكيل.
قم بتثبيت خادم وكيل خاص على VPS الخاص بك هنا:
https://github.com/athlon1600/useful#squid
<?php
use SerpScraper Engine GoogleSearch ;
use SerpScraper GoogleCaptchaSolver ;
$ google = new GoogleSearch ();
$ browser = $ google -> getBrowser ();
$ browser -> setProxy ( ' PROXY:IP ' );
$ solver = new GoogleCaptchaSolver ( $ browser );
while ( true ){
$ response = $ google -> search ( ' famous people born in ' . mt_rand ( 1500 , 2020 ));
if ( $ response -> error == ' captcha ' ) {
echo " Captcha detected! " . PHP_EOL ;
$ temp = $ solver -> solveUsingTwoCaptcha ( $ response , ' 2CAPTCHA_API_KEY ' , 90 );
if ( $ temp -> status == 200 ) {
echo " Captcha solved successfully! " . PHP_EOL ;
} else {
echo ' Solving captcha has failed... ' . PHP_EOL ;
}
} else {
echo " OK. " ;
}
sleep ( 2 );
} <?php
use SerpScraper Engine BingSearch ;
$ bing = new BingSearch ();
$ results = array ();
for ( $ page = 1 ; $ page < 10 ; $ page ++){
$ response = $ bing -> search ( " search bing using php " , $ page );
if ( $ response -> error == false ){
$ results = array_merge ( $ results , $ response -> results );
}
if ( $ response -> has_next_page == false ){
break ;
}
}
var_dump ( $ results );