De inhoud van een site schrapen met een beveiligde aanmelding

Ik probeer de inhoud van de a-website te verwijderen met beveiligde aanmelding maar niet in staat om het te doen De login van de site heeft drie opties gebruikersnaam, wachtwoord, wachtwoord hier is de code die ik gebruik

<?php

// HTTP authentication

$url = "http://aftabcurrency.com/login_script.php";

$ch = curl_init();    

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_URL, $url); 
$cookie = 'cookies.txt';
$timeout = 30;
curl_setopt($curl, CURLOPT_TIMEOUT,         10); 
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT,  $timeout );
curl_setopt($curl, CURLOPT_COOKIEJAR,       $cookie);
curl_setopt($curl, CURLOPT_COOKIEFILE,      $cookie);

curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch,CURLOPT_POSTFIELDS,"user_name=user&user_password=pass&passcode=code");             

$result = curl_exec($ch); 

curl_close($ch); 

echo $result;

?>
5
ik heb deze code geprobeerd met wijzigingen die je hebt geaccepteerd in het antwoord, maar deze code werkt niet voor mij, ik gebruik de gegevens van mijn Amazon-verkopersaccount, maar er gebeurt niets, kun je me iets sturen aangezien ik nieuw ben in PHP.
toegevoegd de auteur Working Hard.., de bron

2 antwoord

je moet een POST doen om http://aftabcurrency.com/login_script.php je krul moet ook cookies accepteren.
Na de authenticatie zal het script u omleiden, dus u moet ook CURLOPT_FOLLOWACTION toevoegen.

hier is een bewerkte versie van je script, ik kan het niet testen op http://aftabcurrency.com/ hoop het werken:

$url = "http://aftabcurrency.com/login_script.php";

$ch = curl_init();    
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_URL, $url); 
$cookie = 'cookies.txt';
$timeout = 30;

curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT,         10); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,  $timeout );
curl_setopt($ch, CURLOPT_COOKIEJAR,       $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE,      $cookie);

curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch,CURLOPT_POSTFIELDS,"user_name=user&user_password=pass&passcode=code");     

$result = curl_exec($ch);

/* //OPTIONAL - Redirect to another page after login
$url = "http://aftabcurrency.com/some_other_page";
curl_setopt ($ch, CURLOPT_POST, 0); 
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
 */ //end OPTIONAL 

curl_close($ch); 
echo $result;
7
toegevoegd
Ik heb een aantal OPTIONELE code toegevoegd om aan te geven hoe je naar een andere pagina op dezelfde site kunt doorsturen nadat je bent ingelogd.
toegevoegd de auteur jsherk, de bron
hier heb ik je code bewerkt, in je cookiedeel heb je een verkeerde variabele ingesteld ($ curl en not $ ch) en ook heb ik CURLOPT_FOLLOWACTION toegevoegd, zodat het script je kan omleiden na inloggen.
toegevoegd de auteur MilMike, de bron
er zijn veel manieren om html-inhoud te schrapen: zoekfuncties php-string, regex, dom/simplexml (xpath) ...
toegevoegd de auteur MilMike, de bron
open een nieuwe vraag hier op stackoverflow, ik kan hier geen code schrijven omdat ik maar 500 karakters kan schrijven ..;) of zoek het op stack overflow - gebruik sleutelwoorden: PHP scraping, persoonlijk zou ik dit doen door xpath (simplexml).
toegevoegd de auteur MilMike, de bron
alleen als u dit antwoord accepteert;)
toegevoegd de auteur MilMike, de bron
Code is bewerkt, is dit de juiste manier om cookies te plaatsen?
toegevoegd de auteur user1447187, de bron
Bedankt dat het werkt. Wat als ik een bepaalde "tekst" van die pagina wil schrapen, bijvoorbeeld in aftabcurrency.com willen alleen "Onze diensten zijn belangrijk!" (deze tekst verandert elke dag) een idee?
toegevoegd de auteur user1447187, de bron
kan je me een korte hint geven of een link naar een tutorial?
toegevoegd de auteur user1447187, de bron
Kan je me vertellen hoe het moet door krul Ik bedoel, hoe integreren in bovenstaande codes?
toegevoegd de auteur user1447187, de bron
Ik heb een code gevonden op deze site digeratimarketing.co .uk/2008/12/16/curl-page-scraping-script maar niet in staat om het in de bovengenoemde code te integreren
toegevoegd de auteur user1447187, de bron
Ik heb een nieuwe vraag geopend stackoverflow.com/questions/11184447/…
toegevoegd de auteur user1447187, de bron
- qxxx Kunt u alstublieft de nieuwe vraag beantwoorden die ik hierboven heb gegeven?
toegevoegd de auteur user1447187, de bron
Oh sorry ik heb het geaccepteerd bedankt
toegevoegd de auteur user1447187, de bron

U moet uw gebruikersnaam/wachtwoord/toegangscode POSTEN naar die pagina. Wat u nu probeert te doen, is http-authenticatie. Dus in plaats van dit

curl_setopt($ch, CURLOPT_USERPWD, "demo:demopass:demopasscode"); 

je hebt dit nodig

curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, "user_name=xxxxx&user_password=xxxxxx&passcode=xxxxx"); 
0
toegevoegd
Gedaan maar nu toont het een blanco pagina
toegevoegd de auteur user1447187, de bron