mi aspetto che il token del campo hidden tenga conto di un timer oltre che di un match con la sessione in modo che non si possano fare cose come questa (per vari motivi di sicurezza fra l'altro)
Ma quale differenza passa se apro con un browser e rispondo oppure estraggo con un parser e rispondo ??
Quindi se tramite un browser con il solito script ma fatto in JavaScript potrebbe funzionare ??
oppure:
potrei simulare il browser tramite il componente browser in C, aprire la pagina interessata, aggiungere i valori che mi servono ai campi del form e inviare, in questo modo è un browser che fa tutto, sbaglio ???
Questo è il codice che ho usato:
Scusate mi sono accorto ora che il mio annuncio è su kijiji non su subito, vabbe poco importa questo...
<?
require_once('includes/config.php');
require_once(DOCUMENT_ROOT.'classes/simple_html_dom.php');
function getRandomUserAgent()
{
$userAgents=array(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)",
"Opera/9.20 (Windows NT 6.0; U; en)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50",
"Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en]",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.7) Gecko/20040624 Firefox/0.9",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/48 (like Gecko) Safari/48"
);
$random = rand(0,count($userAgents)-1);
return $userAgents[$random];
}
$html = file_get_html('http://www.kijiji.it/annunci/cerco-lavoro-servizi/arezzo-annunci-capolona/programmatore-client-server/107612918');
$url = 'http://www.kijiji.it'.$html->find('form#reply-form', 0)->action;
$hidden = $html->find('form#reply-form input', 4)->value;
$fields = array(
'name' => urlencode('pippo'),
'email' => urlencode('
[email protected]'),
'message' => urlencode('Ciao, vorrei ricevere informazioni !!!'),
'privacy2' => urlencode('true'),
'privacy3' => urlencode('true'),
'csrf-token' => urlencode($hidden)
);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_USERAGENT,getRandomUserAgent());
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
$result = curl_exec($ch);
curl_close($ch);
?>