|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 62668.9284 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
26.12.2011, 02:32
|
#1
|
Senior
Регистрация: 24.09.2008
Сообщений: 2,717
Бабло: $519695
|
Массовая проверка наличия ссылки
Сабж, нужно кормить листы урлов и чтобы софт чекал наличие указаной ссылки. Или хотя бы домена.
Базы не очень большие, поэтому прокси и прочие плюшки не нужны.
Главное - простота. Есть такая фича в хрумере, но каждый раз - напрягает.
сервер/винда - не важно.
спасибо
|
|
|
26.12.2011, 02:49
|
#2
|
Senior Member
Регистрация: 03.03.2008
Сообщений: 2,274
Бабло: $263105
|
Код:
<?
$url="http://yandex.ru";
$links=file_get_contents("links.txt");
$links=explode("\r\n",$links);
$kol=count($links);
for ($i=0;$i<$kol;$i++) {
$c=file_get_contents($links[$i]);
$ok=strpos($c,$url);
if ($ok) {
$result.=$links[$i]."\r\n";
} else {
$result2.=$links[$i]."\r\n";
}
unset($ok);
}
$file=fopen("yes.txt","a+");
fputs($file,$result);
fclose($file);
$file=fopen("no.txt","a+");
fputs($file,$result2);
fclose($file);
?>
В первой строке урл, который ищем, в links.txt по 1 урлу на строке, где искать
в yes.txt будут урлы где нашли
в no.txt где не нашли
на папку со скриптом права 777
написал щас по пьяни, но должно работать))
|
|
|
26.12.2011, 03:10
|
#3
|
Senior Member
Регистрация: 29.04.2010
Сообщений: 439
Бабло: $76039
|
|
|
|
26.12.2011, 04:07
|
#4
|
Je suis moine ivre
Регистрация: 03.03.2009
Сообщений: 15,268
Бабло: $797172957
|
PHP код:
<?
$myshit="http://govno.com";
$ok=array();
$pages=array_map("trim", file("pages.txt"));
for($i=0;$i<count($pages);$i++){
if(substr_count(file_get_contents($pages[$i]), $myshit)>0) array_push($ok, $pages[$i]);
}
if(count($ok)>0){
echo implode("<br>", $ok);
}
?>
В $ok массивом те, где урл есть. Но не гарантирует именно тег ссылки.
|
|
|
26.12.2011, 04:39
|
#5
|
Senior Member
Регистрация: 25.12.2008
Сообщений: 1,099
Бабло: $272735
|
чекпарамс такое делает, и довольно отлично и успешно
|
|
|
26.12.2011, 04:40
|
#6
|
Senior
Регистрация: 24.09.2008
Сообщений: 2,717
Бабло: $519695
ТС -->
|
ТС
всем спасибо, буду пробовать!
|
|
|
26.12.2011, 10:18
|
#7
|
Member
Регистрация: 20.09.2008
Сообщений: 50
Бабло: $12790
|
Хрумером ещё можно. Инструменты - анализатор базы ссылок
|
|
|
26.12.2011, 10:36
|
#8
|
Профи Интернет коммерции
Регистрация: 04.04.2007
Сообщений: 2,344
Бабло: $456535
|
Цитата:
Сообщение от Drunk Monk
PHP код:
<?
$myshit="http://govno.com";
$ok=array();
$pages=array_map("trim", file("pages.txt"));
for($i=0;$i<count($pages);$i++){
if(substr_count(file_get_contents($pages[$i]), $myshit)>0) array_push($ok, $pages[$i]);
}
if(count($ok)>0){
echo implode("<br>", $ok);
}
?>
В $ok массивом те, где урл есть. Но не гарантирует именно тег ссылки.
|
$myshit="href=\"http://govno.com";
тогда будет ссылки но не гарантирует опять же что не nofollow
|
|
|
26.12.2011, 10:45
|
#9
|
Особый статус
Регистрация: 05.10.2007
Сообщений: 771
Бабло: $163646
|
Лови на мультикурл
PHP код:
set_time_limit(0);
error_reporting(E_ALL);
$time_start = time();
$cmh = curl_multi_init();
$tasks = array();
$agents = array(
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)',
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.84 Safari/534.13',
'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 AlexaToolbar/alxf-2.01 Firefox/3.6.13',
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'
);
$count_agents = count($agents);
$proxies = array();
$counter = 0;
foreach ($urls as $url)
{
$rand_proxy[$url] = $proxies[$counter];//echo $rand_proxy.'<br>';
$rand_index = mt_rand(0,($count_agents-1));
$agent[$url] = $agents[$rand_index];
$ch = curl_init('http://'.$url);
$referer_url = 'http://www.google.com/';
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
curl_setopt($ch, CURLOPT_NOPROGRESS, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $referer_url);
curl_setopt($ch, CURLOPT_USERAGENT, $agent[$url]);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 90);
curl_setopt($ch, CURLOPT_PROXY, $rand_proxy[$url]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$tasks[$url] = $ch;
curl_multi_add_handle($cmh, $ch);
}
$active = null;
do {
$mrc = curl_multi_exec($cmh, $active);
}
while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && ($mrc == CURLM_OK))
{
if (curl_multi_select($cmh) != -1)
{
do {
$mrc = curl_multi_exec($cmh, $active);
$info = curl_multi_info_read($cmh);
if ($info['msg'] == CURLMSG_DONE)
{
$ch = $info['handle'];
$url = array_search($ch, $tasks);
$tasks[$url] = curl_multi_getcontent($ch);// забираем содержимое
$gets[$url] = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_multi_remove_handle($cmh, $ch);// удаляем поток из мультикурла
curl_close($ch);// закрываем отдельное соединение (поток)
}
}
while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
curl_multi_close($cmh);// закрываем мультикурл
$query = '';
while(list($url,$contents) = each($tasks))
{
if($gets[$url] == 200 or $gets[$url] == 201)
{
if ($contents != '')
{
preg_match("!your_url!si",$contents,$matches);
$in_google = 0;
if(isset($matches[1]))
{
echo $url.' has your_url<br>';
}
else
{
echo $url.' - WHERE IS MY FUCKING URL?<br>';
}
}
}
else
{
echo $url.' dead '.$gets[$url].'<br>';
}
}
echo "<br>Working ".(time()-$time_start)." s.<br>";
В массив $urls забиваем список ссылок для проверки.
your_url - меняешь на свою ссылку.
Может где и ошибка - т.к. брал из своего скрипта и удалял военные данные.
|
|
|
26.12.2011, 12:21
|
#10
|
Je suis moine ivre
Регистрация: 03.03.2009
Сообщений: 15,268
Бабло: $797172957
|
Цитата:
Сообщение от mavook
$myshit="href=\"http://govno.com";
тогда будет ссылки но не гарантирует опять же что не nofollow
|
А если не " а ' ?
|
|
|
|