|
| Få url af redirect med curl eller Fra : Leif Neland |
Dato : 17-09-09 15:06 |
|
Jeg skal "screen-scrape" et site.
I php læser jeg et varekatalog ind, og ser f.ex. en link som
http://producent.dom/damecykel%20med%dieselgenerator%20og%20harpun
Ser jeg denne side i en browser, redirectes jeg til
http://producent.dom/katalog.php?id=123
Dette redirect vil jeg gerne fange i php, så jeg kan læse url'en.
Jeg bruger eksemplet fra http://dk2.php.net/manual/en/ref.curl.php
hvor jeg har fjernet det kode, der manuelt redirecter.
function get_url( $url, $javascript_loop = 0, $timeout = 5)
{
$url = str_replace( "&", "&", urldecode(trim($url)) );
$cookie = tempnam ("/tmp", "CURLCOOKIE");
$ch = curl_init();
curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U;
Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required
for https urls
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
curl_setopt( $ch, CURLOPT_MAXREDIRS, 1 );
$content = curl_exec( $ch );
$response = curl_getinfo( $ch );
curl_close ( $ch );
return array( $content, $response );
}
Men med curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
bliver jeg redirectet, dvs $content har den ny side, og $response['url']
er blot http://producent.org/katalog.php?
Med curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, false );
er $content tom, og $response['url'] indeholder den originale url.
Ingen af metoderne giver den url, der redirectes til.
Hva' så
Leif
| |
Dan Storm (17-09-2009)
| Kommentar Fra : Dan Storm |
Dato : 17-09-09 15:19 |
|
Leif Neland skrev:
> Men med curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
> bliver jeg redirectet, dvs $content har den ny side, og $response['url']
> er blot http://producent.org/katalog.php?
>
> Med curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, false );
> er $content tom, og $response['url'] indeholder den originale url.
>
> Ingen af metoderne giver den url, der redirectes til.
Brug CURLOPT_HEADER og parse de headers du får retur.
Typisk vil redirectet anføres som
Location: /sti_til_ny_side
--
Dan Storm - storm at err0r dot dk / http://err0r.dk
Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!
| |
Stig Johansen (18-09-2009)
| Kommentar Fra : Stig Johansen |
Dato : 18-09-09 10:13 |
|
Dan Storm wrote:
> Brug CURLOPT_HEADER og parse de headers du får retur.
> Typisk vil redirectet anføres som
> Location: /sti_til_ny_side
Det skal de vel (?).
Nu skriver Leif ikke rigtig noget, der kan bruges til noget, men jeg
strikkede et lille tool sammen til netop at identificere redirection:
< http://w-o-p-r.dk/wopr.tools/probes/wopr.probes.asp>
Kig under headers.
Det er sådan set et internal tool, og jeg vil sætte pris på, at det ikke
bliver (mis)brugt, da det kører over min private linie.
Men prøv f.eks: < http://v2.dk> og se hvad der sker.
Som sagt så er det bare et 'investigation tool', hvor jeg har observeret, at
der kan være op til 5 redirections i 'svineørernes' koncepter, og deraf
efterfølgende 'mulighed' for download af malware.
--
Med venlig hilsen
Stig Johansen
| |
Dan Storm (18-09-2009)
| Kommentar Fra : Dan Storm |
Dato : 18-09-09 10:34 |
|
Stig Johansen skrev:
> Dan Storm wrote:
>
>> Brug CURLOPT_HEADER og parse de headers du får retur.
>> Typisk vil redirectet anføres som
>> Location: /sti_til_ny_side
>
> Det skal de vel (?).
Mjaeh, jeg er et par gange stødt på noget ala
Refresh: 0; url= http://www.example.com/
Det er grimt, men den er helt i vinkel.
>
> Nu skriver Leif ikke rigtig noget, der kan bruges til noget, men jeg
> strikkede et lille tool sammen til netop at identificere redirection:
> < http://w-o-p-r.dk/wopr.tools/probes/wopr.probes.asp>
> Kig under headers.
> Det er sådan set et internal tool, og jeg vil sætte pris på, at det ikke
> bliver (mis)brugt, da det kører over min private linie.
>
> Men prøv f.eks: < http://v2.dk> og se hvad der sker.
Det er faktisk et godt værktøj i virkeligheden.
Det er en god måde at løbe en omgang redirections igennem, hvis det
skulle være. Den funktionalitet tilbyder f.eks. firefox ikke på trods af
at du kan læse response headers med Web Developer.
> Som sagt så er det bare et 'investigation tool', hvor jeg har observeret, at
> der kan være op til 5 redirections i 'svineørernes' koncepter, og deraf
> efterfølgende 'mulighed' for download af malware.
>
Ja, de kan være lidt snu, for det kan jo hurtigt blive svært at følge
med alle de redirections...
--
Dan Storm - storm at err0r dot dk / http://err0r.dk
Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!
| |
Stig Johansen (18-09-2009)
| Kommentar Fra : Stig Johansen |
Dato : 18-09-09 13:19 |
|
Dan Storm wrote:
> Stig Johansen skrev:
>> Dan Storm wrote:
>>
>>> Brug CURLOPT_HEADER og parse de headers du får retur.
>>> Typisk vil redirectet anføres som
>>> Location: /sti_til_ny_side
>>
>> Det skal de vel (?).
>
> Mjaeh, jeg er et par gange stødt på noget ala
> Refresh: 0; url= http://www.example.com/
>
> Det er grimt, men den er helt i vinkel.
Mener du så'n i det virkelige liv (stødt på)?
Det er jo ikke standard, så jeg ville egentlig ikke forvente 'de' brugte
det.
Ikke sådan at forstå, at 'de' bruger standarder, men jeg ville formode 'de'
bruger teknikker der virker i de fleste browsere.
Jeg ved heller ikke om det vil virke i nyere IE'er, da jeg kører Win2K, og
er afskåret fra at fordybe mig i IE's herligheder og innovationer efter
IE6.
--
Med venlig hilsen
Stig Johansen
| |
Peter Farsinsen (18-09-2009)
| Kommentar Fra : Peter Farsinsen |
Dato : 18-09-09 13:29 |
|
Stig Johansen wrote:
> Jeg ved heller ikke om det vil virke i nyere IE'er, da jeg kører Win2K, og
> er afskåret fra at fordybe mig i IE's herligheder og innovationer efter
> IE6.
/Det/ lyder ubehageligt.
--
Peter Farsinsen
fornavn@efternavn.dk
| |
Stig Johansen (18-09-2009)
| Kommentar Fra : Stig Johansen |
Dato : 18-09-09 14:41 |
|
Peter Farsinsen wrote:
> Stig Johansen wrote:
>> Jeg ved heller ikke om det vil virke i nyere IE'er, da jeg kører Win2K,
>> og er afskåret fra at fordybe mig i IE's herligheder og innovationer
>> efter IE6.
>
> /Det/ lyder ubehageligt.
Glemte måske et <sarcasm value="on> i mit indlæg.
Jeg har skam min trofaste Konqueror, der i mange år har haft faneblade,
individuel javascript/cookies osv, og derudover har jeg sidste nye Firefox
med diverse plugins, på min ene Win-maskine.
IE interesserer mig faktisk overhovedet ikke.
--
Med venlig hilsen
Stig Johansen
| |
Peter Farsinsen (18-09-2009)
| Kommentar Fra : Peter Farsinsen |
Dato : 18-09-09 15:00 |
|
Stig Johansen wrote:
> Jeg har skam min trofaste Konqueror, der i mange år har haft faneblade,
> individuel javascript/cookies osv, og derudover har jeg sidste nye Firefox
> med diverse plugins, på min ene Win-maskine.
>
> IE interesserer mig faktisk overhovedet ikke.
He he. Så giver det lidt mere mening.
Nu ved jeg ikke, hvad du beskæftiger dig med, men er det ikke
problematisk at arbejde med webudvikling uden at have adgang til IE? Når
'ting' virker er det jo gerne der man bruger de sidste 15% af budgettet ;)
--
Peter Farsinsen
fornavn@efternavn.dk
| |
Philip Nunnegaard (18-09-2009)
| Kommentar Fra : Philip Nunnegaard |
Dato : 18-09-09 18:24 |
|
Peter Farsinsen skrev:
> Nu ved jeg ikke, hvad du beskæftiger dig med, men er det ikke
> problematisk at arbejde med webudvikling uden at have adgang til IE? Når
> 'ting' virker er det jo gerne der man bruger de sidste 15% af budgettet ;)
Min egen erfaring siger mig faktisk at hvis noget virker både i Firefox,
Opera og IE6, virker det også i nyere versioner af IE.
--
Philip - http://chartbase.dk | http://www.hitsurf.dk
| |
Peter Farsinsen (19-09-2009)
| Kommentar Fra : Peter Farsinsen |
Dato : 19-09-09 12:08 |
|
Philip Nunnegaard wrote:
>> Nu ved jeg ikke, hvad du beskæftiger dig med, men er det ikke
>> problematisk at arbejde med webudvikling uden at have adgang til IE?
>> Når 'ting' virker er det jo gerne der man bruger de sidste 15% af
>> budgettet ;)
>
> Min egen erfaring siger mig faktisk at hvis noget virker både i Firefox,
> Opera og IE6, virker det også i nyere versioner af IE.
Det er nok heller ikke helt forkert. Jeg arbejder ikke på Windows, så IE
er ikke med i loopet fra starten af. Det passer mig faktisk fint ikke at
skulle tænke på det før til sidst.
--
Peter Farsinsen
fornavn@efternavn.dk
| |
Stig Johansen (19-09-2009)
| Kommentar Fra : Stig Johansen |
Dato : 19-09-09 16:12 |
|
Peter Farsinsen wrote:
> Nu ved jeg ikke, hvad du beskæftiger dig med,
Sår'n lidt 'core' serverudvikling.
> men er det ikke
> problematisk at arbejde med webudvikling uden at have adgang til IE?
Jeg har skam 'adgang' til IE(6), men mit metiér er mere ovre i 'COBOL'
verdenen, og på websiden lidt ovre i DW/BI verdenen, hvor der ikke skal
blip-og-båt til.
> Når
> 'ting' virker er det jo gerne der man bruger de sidste 15% af budgettet ;)
Kender jeg ikke noget til ;)
--
Med venlig hilsen
Stig Johansen
| |
Dan Storm (18-09-2009)
| Kommentar Fra : Dan Storm |
Dato : 18-09-09 13:44 |
|
Stig Johansen skrev:
>> Mjaeh, jeg er et par gange stødt på noget ala
>> Refresh: 0; url= http://www.example.com/
>>
>> Det er grimt, men den er helt i vinkel.
>
> Mener du så'n i det virkelige liv (stødt på)?
>
Jeps - husker en løsning hos et større webhus hvor det var standard ved
redirections i en periode.
> Det er jo ikke standard, så jeg ville egentlig ikke forvente 'de' brugte
> det.
>
> Ikke sådan at forstå, at 'de' bruger standarder, men jeg ville formode 'de'
> bruger teknikker der virker i de fleste browsere.
>
Måske ikke standard, men helt legitimt.
--
Dan Storm - storm at err0r dot dk / http://err0r.dk
Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!
| |
|
|