这是我的代码:
<?php
error_reporting(-1);
ini_set('max_execution_time', 0);
date_default_timezone_set('UTC');
$starttime = date("H:i:s");
$targetsfile = $argv[1];
if(!isset($argv[1])) { echo "[-] Try again...\n"; die(); }
$nodes = array();
$nodes = file("$targetsfile", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$node_count = count($nodes);
$curl_arr = array();
$master = curl_multi_init();
for($i = 0; $i < $node_count; $i++)
{
$agent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; pt-pt) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27";
$url = $nodes[$i];
$curl_arr[$i] = curl_init($url);
curl_setopt($curl_arr[$i], CURLOPT_URL, $url);
curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent);
curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_arr[$i], CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl_arr[$i], CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_arr[$i], CURLOPT_MAXREDIRS, 2);
curl_setopt($curl_arr[$i], CURLOPT_VERBOSE, false);
curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 3);
curl_multi_add_handle($master, $curl_arr[$i]);
}
do
{
curl_multi_exec($master,$running);
usleep(5000);
} while($running > 0);
for($i = 0; $i < $node_count; $i++)
{
$results = curl_multi_getcontent ( $curl_arr[$i] );
#HERE#
}
echo "DONE!\n";
echo "START TIME: $starttime\n";
$endtime = date("H:i:s");
echo "END TIME: $endtime\n";
?>
我尝试使用多卷曲功能抓取多个网站,但我需要获取内容的每个网址的值可以继续构建我的脚本,但它会返回我写的值:
see #HERE# line
我需要为每个$url
提供$curl_arr[$i]
的确切值,但如果我尝试回显$ curl_arr [$ i]值,则会返回如下值:
Resource id #27Resource id #27Resource id #28Resource id #28DONE!
有机会在我的for循环中返回变量$ url的确切值吗?或者shouild我认为编写整个代码的另一种方法。
答案 0 :(得分:1)
我想这可以通过curl_getinfo
:
$url = curl_getinfo($curl_arr[$i], CURLINFO_EFFECTIVE_URL);