Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diegodargos

Navegação por cURL

Recommended Posts

Seguinte galera,

 

Estou com um sistema que entro em uma pagina, pego as informações dela normalmente, mas a partir dai preciso dar um post com as referencias que eu peguei, pois a cada vez que eu entro no site essas informações mudam, nao estou conseguindo postar.

 

 

function curl_file_get_contents($url)
{
$ch = curl_init();
$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_FAILONERROR, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt ($ch, CURLOPT_COOKIE, true);
curl_setopt ($ch, CURLOPT_COOKIEFILE, true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
$contents = curl_exec($ch);
curl_close($ch);
return $contents;
}
$post = curl_file_get_contents('https://www.site,com.br');
$id_submit = preg_match_all('<input type="hidden".+>', $post, $receber);
$submit = $receber[0][1];
$submit = str_replace('input type="hidden" name="',"",$submit);
$submit = substr($submit,0, 28);
$cookie = preg_match_all('<xxxxxx.+>', $post, $jsessionid);
$jsessionid = $jsessionid[0][0];
$jsessionid = str_replace('xxxxxx',"",$jsessionid);
$jsessionid = str_replace('" xxxxx">',"",$jsessionid);
$cookie = substr($jsessionid,1, 10);
$jsessionid = substr($jsessionid,12,25);
$cookie = ($cookie."=".$jsessionid);
$javaxview = preg_match_all('<javax.+>', $post, $javax);
$javax = $javax[0][0];
$name = $javax;
$name = substr($name, 0, 21);
$javax = str_replace('javax.faces.ViewState" id="javax.faces.ViewState" value="', "",$javax);
$javax = str_replace('" />',"",$javax);
$javax = substr($javax, 0, 136);
$javax = rtrim($javax);
$onclick = preg_match_all('<onclick.+>', $post, $variavel);
$link = $variavel[0][2];
$link = str_replace('onclick="return oamSubmitForm(', "",$link);
$link = str_replace('xxxxxx'," ",$link);
$link = str_replace("'"," ",$link);
$valor1 = substr($link, 1, 22);
$valor2 = substr($link, 25, 68);
$valor2 = rtrim($valor2);
$valor1 = $valor1.":_idcl";
$postfields = array(
'autoScroll' => '0,0',
$submit => '1',
$valor1 => $valor2,
$name => $javax
);
Em vermelho é a parte onde busco as informações do site, e está funcionando, porem nao sei como fazer o post no mesmo site sem que eu tenha saido dele.
Se alguem tiver alguma ideia eu ficaria muito grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diego, estou um problema parecido com o teu, o sistema gera html dinâmicos e complica a vida com o curl, tem como você postar o seu resultado? ficarei grato.

Obrigado desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte, no meu caso os id's dos inputs eram dinâmicos, portanto eu procurei algo que era padrão para conseguir fazer o get dos id's.

 

exemplo: criei uma class
function getElemento($html, $cssSelector, $atributo){
$dom = phpQuery::newDocument($html);
$v = array();
foreach(pq($cssSelector) as $elemento){
if($atributo == "html"){
$v[] = pq($elemento)->html();
}elseif($atributo == "text"){
$v[] = pq($elemento)->text();
}else{
$v[] = pq($elemento)->attr($atributo);
}
}

if(count($v) == 1 ){
return $v[0];
}else{
return $v;
}
}

 

 

dps fiz o get do html assim:

 

$x= getElemento ($html, 'input[type=text]', 'id');

 

Caso haja mais de um input com esse type ele me da um array, depois é só buscar qual array vc quer.

manda ai o que vc está tentando fazer pra ver se posso ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.