Я не уверен, что здесь происходит, я использую Goutte для сканирования, пытаюсь отсканировать все эксплойты на exploitdb, но, очевидно, я не могу нажать 1 конкретную ссылку. Вот код:
<?php
require_once 'goutte.phar';
use Goutte\Client;
$client = new Client();
function crawler_metasploit(){
global $client;
$crawler = $client->request('GET','https://www.exploit-db.com/search/?order_by=date&order=desc&pg=1&action=search');
$exploits = $crawler->filterXPath('//table[@class="exploit_list bootstrap-wrapper"]//tr[position()=14]/
td[@class="description"]/a[@href]')->each(function ($nodes) {
return $nodes->text();
});
foreach ($exploits as $exploit){
//$exploit = trim(preg_replace("/[\r\n]+/", " ", $exploit));
print "<p>".$exploit."</p>";
if ($exploit == 'VideoCharge Express 3.16.3.04 - BOF Exploit'){
print 'same';
}
else {
print '<p>diff</p>';
print '<p>VideoCharge Express 3.16.3.04 - BOF Exploit</p>';
print $exploit;
}
$crawler2 = $client->click($crawler->selectLink($exploit)->link());
$code = $crawler2->filterXPath('//table[@class="exploit_list"]//tr[position()=1]/td[position()=2]/a')->each(function ($nodes) {
return $nodes->text();
});
print "<p>".$code[0]."</p>";
if ($code[0] != ""){
print "there is cve";
}
print 'hi';
}
}
crawler_metasploit();
?>
Вывод «diff», по-видимому, строка такая же, как когда я копирую, вставляю ее прямо с сайта, но это не так, это происходит только с этой конкретной строкой, я тоже использовал эту функцию:
$exploit = trim(preg_replace("/[\r\n]+/", " ", $exploit));
но безуспешно
Что может происходить?
Задача ещё не решена.
Других решений пока нет …