/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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!

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste