我怎样才能制作这个 PHP 脚本 运行 faster/asynchronously?
How can I make this PHP script run faster/asynchronously?
我有一个 pastebin 抓取脚本,旨在查找泄露的电子邮件和密码,以制作类似 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);
}
}
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 专业帐户 ( https://pastebin.com/pro ), it costs about (or around Christmas & Black Friday), and is a lifetime account with a 1-time payment, and gives you access to the scraping api ( https://pastebin.com/doc_scraping_api ),使用 scraping api 你可以获得大约 1 个粘贴第二,或者每天86400次粘贴,没有被封禁。
并且由于 pastebin.com 的速率限制,无需使用多个连接异步执行此操作(这是可能的,但不值得麻烦。但是,如果您确实需要这样做,您d 必须使用 curl_multi API
)
我有一个 pastebin 抓取脚本,旨在查找泄露的电子邮件和密码,以制作类似 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);
}
}
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 专业帐户 ( https://pastebin.com/pro ), it costs about (or around Christmas & Black Friday), and is a lifetime account with a 1-time payment, and gives you access to the scraping api ( https://pastebin.com/doc_scraping_api ),使用 scraping api 你可以获得大约 1 个粘贴第二,或者每天86400次粘贴,没有被封禁。
并且由于 pastebin.com 的速率限制,无需使用多个连接异步执行此操作(这是可能的,但不值得麻烦。但是,如果您确实需要这样做,您d 必须使用 curl_multi API
)