Как я могу заставить этот скрипт PHP работать быстрее / асинхронно? - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть скрипт-скребок, который предназначен для поиска просочившихся писем и паролей, для создания веб-сайта, подобного HaveIBeenPwned .

Вот что делает мой скрипт:- Очистка ссылок Pastebin от https://psbdmp.ws/dumps
- Получение случайного прокси с использованием этого API случайного прокси (потому что Pastebin блокирует ваш IP, если вы забиваете слишком много запросов): https://api.getproxylist.com/proxy
- Выполнение запроса CURL для ссылок PastebinЗатем выполните preg_match_all, чтобы найти все адреса электронной почты и пароли в формате email:password.Кажется, что настоящий скрипт работает нормально, но он недостаточно оптимизирован, и через некоторое время выдает ошибку времени ожидания 524, что, как я подозреваю, происходит из-за всех этих запросов CURL.Вот мой код:api.php

    function comboScrape_CURL($url) {
    // Get random proxy
    $proxies->json = file_get_contents("https://api.getproxylist.com/proxy");
    $proxies->decoded = json_decode($proxies->json);
    $proxy = $proxies->decoded->ip.':'.$proxies->decoded->port;
    list($ip,$port) = explode(':', $proxy);

    // Crawl with proxy
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $curl_scraped_page = curl_exec($ch);
    curl_close($ch);
    comboScrape('email:pass',$curl_scraped_page);
}

index.php

require('api.php');
$expression = "/(?:https\:\/\/pastebin\.com\/\w+)/";

$extension = ['','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20'];
foreach($extension as $pge_number) {
    $dumps = file_get_contents("https://psbdmp.ws/dumps/".$pge_number);
    preg_match_all($expression,$dumps,$urls);
    $codes = str_replace('https://pastebin.com/','',$urls[0]);
    foreach ($codes as $code) {
        comboScrape_CURL("https://pastebin.com/raw/".$code);
    }
}

1 Ответ

0 голосов
/ 24 ноября 2018

524 timeout error - ошибаться, кажется, что вы запускаете php за веб-сервером (apache? Nginx? Lighthttpd? IIS?), Не делайте этого, вместо этого запускайте код из php-cli, php-cli может работать бесконечнои никогда не перерыв.

because Pastebin bans your IP if you hammer too many requests - вместо этого купите профессиональный аккаунт pastebin.com pro (https://pastebin.com/pro), он стоит около 50 долларов (или 20 долларов на Рождество и Черную пятницу) и является пожизненным аккаунтом с 1-время оплаты, и дает вам доступ к очищающему API (https://pastebin.com/doc_scraping_api), с помощью очищающего API вы можете получать около 1 пасты в секунду или 86400 паст в день, не получая IP-бан.

и из-за ограничений скорости pastebin.com, нет необходимости делать это асинхронно с несколькими подключениями (это возможно, но не стоит хлопот. Однако, если вам действительно нужно это сделать, вам придется использовать curl_multi API)

...