O que fiz foi um fopen, que no exemplo abaixo é feito através de um proxy, peguei o cabeçalho da resposta com o stream_get_meta_data e dentro wrapper_data e busquei pelo comando 'Set-Cookie'. Peguei a string com o Set-Cookie do jeito que veio e coloquei no header das requisições seguintes.
$uf = $_REQUEST['u'];
$mun = $_REQUEST['m'];
if(!$mun || !$uf)
{
die("m (nome municipio) ou u (sigla UF) nao foi passado.");
}
$authProxy = base64_encode("<proxy_user>
// Création des options de la requête
$opts = array(
'http' => array (
'method'=>'GET',
'proxy'=>'tcp://
'request_fulluri' => true,
'header'=>"Proxy-Authorization: Basic $authProxy"
)
);
// Création du contexte de transaction
$ctx = stream_context_create($opts);
$u = "http://www.obid.senad.gov.br/portais/OBID/conteudo/web/instituicao/index.php?campo_atuacao%5B%5D=st_prevencao&btn_proximo=Proxima+%3E%3E";
$h = fopen($u, 'r', false, $ctx);
$m = stream_get_meta_data($h);
foreach($m['wrapper_data'] as $wd)
{
if(strpos($wd, 'Set-Cookie') !== false)
{
$ck = str_replace('Set-Cookie', 'Cookie', $wd);
}
}
$opts = array(
'http' => array (
'method'=>'GET',
'proxy'=>'tcp://
'request_fulluri' => true,
'header'=>"Proxy-Authorization: Basic $authProxy\r\n" .
$ck . "\r\n"
)
);
// Création du contexte de transaction
$ctx = stream_context_create($opts);
$u = "http://www.obid.senad.gov.br/portais/OBID/conteudo/web/instituicao/index.php?ds_estado=" . $uf;
$h = fopen($u, 'r', false, $ctx);
$m = stream_get_meta_data($h);
foreach($m['wrapper_data'] as $wd)
{
if(strpos($wd, 'Set-Cookie') !== false)
{
$ck = str_replace('Set-Cookie', 'Cookie', $wd);
}
}
$opts = array(
'http' => array (
'method'=>'GET',
'proxy'=>'tcp://<proxy_addr>:<proxy_port>',
'request_fulluri' => true,
'header'=>"Proxy-Authorization: Basic $authProxy\r\n" .
$ck . "\r\n"
)
);
// Création du contexte de transaction
$ctx = stream_context_create($opts);
$u = "http://www.obid.senad.gov.br/portais/OBID/conteudo/web/instituicao/index.php?ds_cidade=" . $mun;
$r = file_get_contents($u, false, $ctx);
$r = substr($r, strpos($r, '<ul class="imp">'), strrpos($r, '</ul>'));
print_r($r);
Nenhum comentário:
Postar um comentário