我有一个pastebin scraper脚本,该脚本旨在查找泄漏的电子邮件和密码,以创建类似HaveIBeenPwned的网站。
这是我的脚本正在做的事情:
-抓取https://psbdmp.ws/dumps中的Pastebin链接
-使用此随机代理API获取随机代理(因为如果您处理过多请求,Pastebin会禁止您的IP):https://api.getproxylist.com/proxy
-对Pastebin链接进行CURL请求,然后进行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);
}
}
答案 0 :(得分:0)
524 timeout error
-错误,看来您是在Web服务器后面运行php(apache?nginx?lighthttpd?IIS?)不要这样做,而是从php-cli运行代码,php-cli可以无限期运行,永不超时。
because Pastebin bans your IP if you hammer too many requests
-改为购买pastebin.com专业帐户(https://pastebin.com/pro),费用约为50美元(圣诞节和黑色星期五前后约为20美元),并且是终身帐户,需要一次性付款,并允许您访问抓取api(https://pastebin.com/doc_scraping_api),使用抓取api每秒可以获取大约1个粘贴,或者每天获取86400个粘贴,而不会出现ip被禁止的情况。
并且由于pastebin.com的速率限制,不需要通过多个连接异步进行此操作(有可能,但不值得麻烦。如果您实际需要这样做,则必须使用{ {3}})