Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos, bom dia. Estou com um projeto para proprietários de farmácias e farmacêuticos, que visa comparar o preço de custo das distribuidoras para no dia da compra, saber onde está mais barato, qual o melhor desconto, etc. Sou farmacêutico e tenho que entrar em 2-3 sites
Mas preciso da ajuda de vocês, pois não manjo muito de cURL... até tentei fazer um script aqui mas não consegui nem logar no site kkkk
Um dos sites que estou tentando logar (depois vem a parte de pegar os dados, mas já é outro problema) é esse:
https://panpharma.neogrid.com/panpharmaweb/login/panpharma
O script que tenho até o momento, é esse:
<?php
$user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4 FirePHP/0.2.1";
$ch = curl_init();
// informar URL e outras funções ao CURL
curl_setopt($ch, CURLOPT_URL, "https://panpharma.neogrid.com/panpharmaweb/login/panpharma");
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);$data = array('frmLogin:fldEmail' => 'xxxxxxxxx', 'frmLogin:fldPassword' => 'xxxxxxxx');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));curl_exec($ch);
?>
Uso, mas não consigo nem fazer o login!
Alguém pode me ajudar?
>
Olá. Você precisa enviar os dados para a página que recebem eles. Abra o inspecionar elementos e veja a página do "action", vamos ao código.
$data = array("fldEmail" => "xxxxxxxxx", "fldPassword" => "xxxxxxxx");
Você só precisa informar o name do input referente ao que você quer passar dados.
Então, eu já havia olhado a página, e o action está assim:
action="/panpharmaweb/login"
E os inputs estão do mesmo jeit que havia postado... tenho que tirar os frmLogin: ?
Ainda não consigo logar... alguém poderia me dar uma luz de onde estou errando?
Monitora a aba network,
As vezes tem algum campo hidden durante o Login que você não viu.
Ex:
http://stackoverflow.com/questions/15603561/how-can-i-debug-a-http-post-in-chrome
Detalhado:
https://developers.google.com/web/tools/chrome-devtools/network-performance/resource-loading
@Dica extra:
A respeito após o Login, recomendo para captura de informação:
http://simplehtmldom.sourceforge.net/
Ela é Old but gold
Acredito que consegui logar, pois não mostra mais campos de login e senha...
Mas agora está mostrando essa mensagem:
Não existe um Âncora definido ou o mesmo é inválido.
Alguém sabe o que pode ser?
Monitora o 'track/saltos' que podem ocorrer....
Só abrir a aba network, selecionar 'Preserve Log'.
Caso ficou com duvida abra um dos links q te enviei.
As vezes após Login, ocorre um outro salto (em JavaScript).
Já viu a possibilidade de usar uma API ou comunicar o site das farmácias?
Pois consumo de informação via cUrl, qualquer alteração feita no site dos caras vai quebrar sua aplicação :P
>
Monitora o 'track/saltos' que podem ocorrer....
Só abrir a aba network, selecionar 'Preserve Log'.
Caso ficou com duvida abra um dos links q te enviei.
As vezes após Login, ocorre um outro salto (em JavaScript).
Já viu a possibilidade de usar uma API ou comunicar o site das farmácias?
Pois consumo de informação via cUrl, qualquer alteração feita no site dos caras vai quebrar sua aplicação :P
Não sei se existe uma API que faça isso... comunicar o site da farmacia, como assim?
Ué conversa com os caras que desenvolveu o sistema farmácia.
Mas é apenas uma aviso...
Já rolou de amigo meu fazer exatamente oq você está fazendo, e ao terminar na mesma semana entrou um site/sistema novo
Olá. Você precisa enviar os dados para a página que recebem eles. Abra o inspecionar elementos e veja a página do "action", vamos ao código.
$data = array("fldEmail" => "xxxxxxxxx", "fldPassword" => "xxxxxxxx");
Você só precisa informar o name do input referente ao que você quer passar dados.