[PHP/RSS] kort vraagje over RSS

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Ik heb de volgende feed van tweakers via feedburner: http://feeds.feedburner.com/tweakers/nieuws. Als ik deze open in een willekeurige browers krijg ik de laatste headlines.

Maar als ik in PHP het volgende doe krijg ik andere oudere feeds:
PHP:
1
2
3
4
5
6
7
8
9
<?php
    $xml = simplexml_load_file('http://feeds.feedburner.com/tweakers/');

    foreach($xml->channel->item as $item)
    { 
        echo $item->title . '<br />';
        echo $item->description . '<br /> <br />';
    }
?>


Het eerste item via PHP is:
code:
1
2
Britse provider gaat filesharing bestrijden
De Britse internetprovider Virgin Media begint een samenwerkingsverband met de vereniging van Britse platenmaatschappijen, de British Phonographic Industry, om auteursrechtschending via filesharing tegen te gaan. De overeenkomst houdt in dat de provider abonnees waarvan wordt vastgesteld dat ze auteursrechtelijk beschermde muziek aanbieden of downloaden, gaat waarschuwen dat dit verboden is. De...


terwijl via de browser krijg ik:
code:
1
2
3
4
Sony gaat Playstation-devkits leveren aan universiteiten
Sony wil development kits voor het ontwikkelen van Playstation-games beschikbaar gaan stellen aan Amerikaanse universiteiten. PS3-devkits worden echter niet geleverd.

Het PlayStation-edu-project moet studenten inzicht geven in het ontwikkelproces van software voor consoles. Daarvoor kunnen universiteiten de devkits voor de PSP en de PS2 aanschaffen die ook door ontwikkelstudio's worden gebruikt...


Iemand een idee wat dit is? Ik heb het ook bij de feed van NRC en Trouw via Feedburner, terwijl die RSS van fok weer prima gaat maar dat gaat niet via feedburner.

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

Je browser sorteert de items waarschijnlijk op datum, de XML-parser van PHP pakt gewoon het element dat als eerste voorkomt? Kijk eens in de bron van de RSS-feed.

[ Voor 13% gewijzigd door Johnny op 08-06-2008 19:24 ]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Johnny schreef op zondag 08 juni 2008 @ 19:23:
Je browser sorteert de items waarschijnlijk op datum, de XML-parser van PHP pakt gewoon het element dat als eerste voorkomt? Kijk eens in de bron van de RSS-feed.
Ik zat daar ook al aan te denken, maar bij bijvoorbeeld fok staat altijd het laatste item bovenaan, dat is dus al op datum gesorteerd.

Het heeft niet helemaal met de datum te maken want het nieuwste item staat niet in de lijst als ik het via PHP ophaal, wel in de browser. Ik krijg alles tot en met gisteren, de items van vandaag krijg ik gewoon niet maar via de browser wel.

[ Voor 23% gewijzigd door Y0ur1 op 08-06-2008 19:47 ]


Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Even Wireshark aangeslingerd...

PHP
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
GET /tweakers/ HTTP/1.0
Host: feeds.feedburner.com

HTTP/1.1 302 Found
Date: Sun, 08 Jun 2008 18:15:19 GMT
Server: Apache/2.0.54 (Debian GNU/Linux) mod_fastcgi/2.4.2 mod_ssl/2.0.54 OpenSSL/0.9.7e
Location: http://feedproxy.feedburner.com/tweakers/
Vary: Accept-Encoding
Content-Length: 225
Keep-Alive: timeout=15, max=997
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://feedproxy.feedburner.com/tweakers/">here</a>.</p>
</body></html>


Browser
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
GET /tweakers/ HTTP/1.1
Host: feeds.feedburner.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.0 200 OK
Date: Sun, 08 Jun 2008 18:15:29 GMT
Server: Apache
X-FB-Host: chi-write7
Last-Modified: Sun, 08 Jun 2008 18:12:35 GMT
ETag: GBhNqJNB+1tjGQHO2lq0nptzM8E
Content-Encoding: gzip
P3P: CP="ALL DSP COR NID CUR OUR NOR"
Connection: close
Content-Type: text/xml;charset=utf-8


...........}.r.9..{G.? ....#.w...........Ke.9/.
etc.


Het lijkt erop dat aanroepen d.m.v. PHP lijken via een (caching?) proxy te lopen, en die van de browser niet.

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
RAJH schreef op zondag 08 juni 2008 @ 20:20:
Even Wireshark aangeslingerd...

PHP
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
GET /tweakers/ HTTP/1.0
Host: feeds.feedburner.com

HTTP/1.1 302 Found
Date: Sun, 08 Jun 2008 18:15:19 GMT
Server: Apache/2.0.54 (Debian GNU/Linux) mod_fastcgi/2.4.2 mod_ssl/2.0.54 OpenSSL/0.9.7e
Location: http://feedproxy.feedburner.com/tweakers/
Vary: Accept-Encoding
Content-Length: 225
Keep-Alive: timeout=15, max=997
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://feedproxy.feedburner.com/tweakers/">here</a>.</p>
</body></html>


Browser
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
GET /tweakers/ HTTP/1.1
Host: feeds.feedburner.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.0 200 OK
Date: Sun, 08 Jun 2008 18:15:29 GMT
Server: Apache
X-FB-Host: chi-write7
Last-Modified: Sun, 08 Jun 2008 18:12:35 GMT
ETag: GBhNqJNB+1tjGQHO2lq0nptzM8E
Content-Encoding: gzip
P3P: CP="ALL DSP COR NID CUR OUR NOR"
Connection: close
Content-Type: text/xml;charset=utf-8


...........}.r.9..{G.? ....#.w...........Ke.9/.
etc.


Het lijkt erop dat aanroepen d.m.v. PHP lijken via een (caching?) proxy te lopen, en die van de browser niet.
Ja zoiets dacht ik dus ook al. Maar hoe doen ze dat, kijken ze dan naar de headers die je meestuurt? Vinden ze sciptjes via PHP niet leuk ofzo dat ze je daarom doorsturen naar een proxy met verouderde nieuwsberichten?

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Bedankt voor het uitzoeken hoe het kwam; ik had er ook last van (pas sinds enkele weken) en was nog te lui om het goed uit te zoeken.

Voor file_get_contents helpt dit regeltje, wellicht voor simplexml ook.
PHP:
1
ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');

Acties:
  • 0 Henk 'm!

  • Helza
  • Registratie: Maart 2003
  • Laatst online: 11-09 16:01
Dit soort controles gebeuren vaak op de headers, dat is wel het makkelijkste te controleren.
Probeer eens de headers van je browser te sturen, dan merk je het snel genoeg :)

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
GlowMouse schreef op zondag 08 juni 2008 @ 20:39:
Bedankt voor het uitzoeken hoe het kwam; ik had er ook last van (pas sinds enkele weken) en was nog te lui om het goed uit te zoeken.

Voor file_get_contents helpt dit regeltje, wellicht voor simplexml ook.
PHP:
1
ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');
Dit wordt dan alsnog verzonden: Server: Apache/2.0.54 (Debian GNU/Linux) mod_fastcgi/2.4.2 mod_ssl/2.0.54 OpenSSL/0.9.7e Het werkt iig nog niet. Maar ik weet niet wel dat ze dus checken op headers, nu nog fixen :P

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Ok ik ben er uit.

PHP:
1
2
3
4
5
6
<?php
    //ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');
    $fp = file_get_contents('http://feeds.feedburner.com/tweakers/nieuws');
    
    echo $fp;
?>


Check het verschil met en zonder de twee slashes! Met simplexml_load_file werkt het helaas niet dus dan moet ik nog een klein omweggetje maken. (werkt wel)

[ Voor 15% gewijzigd door Y0ur1 op 08-06-2008 21:58 ]


Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Ehm, volgens mij moet je gewoon de redirects volgen?

Rustacean


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Manuzhai schreef op maandag 09 juni 2008 @ 09:23:
Ehm, volgens mij moet je gewoon de redirects volgen?
Nee, want op de proxy staat een verouderde feed.
Y0ur1 schreef op zondag 08 juni 2008 @ 20:51:
Dit wordt dan alsnog verzonden: Server: Apache/2.0.54 (Debian GNU/Linux) mod_fastcgi/2.4.2 mod_ssl/2.0.54 OpenSSL/0.9.7e Het werkt iig nog niet. Maar ik weet niet wel dat ze dus checken op headers, nu nog fixen :P
Naar jou ja, niet naar feedburner.
Y0ur1 schreef op zondag 08 juni 2008 @ 21:10:
Ok ik ben er uit.

PHP:
1
2
3
4
5
6
<?php
    //ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');
    $fp = file_get_contents('http://feeds.feedburner.com/tweakers/nieuws');
    
    echo $fp;
?>


Check het verschil met en zonder de twee slashes! Met simplexml_load_file werkt het helaas niet dus dan moet ik nog een klein omweggetje maken. (werkt wel)
Met slashes doet die regel helemaal niets. Erg merkwaardig dat het dan plotseling zou gaan werken.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Als dat wel werkt, is het dankzij het enige functionele verschil: de url. In de startpost staat /tweakers/ en hier staat /tweakers/nieuws . B)

Nofi, maar als je denkt dat commentaar toevoegen helpt, of request en response headers door elkaar haalt, heb je eigenlijk geen idee wat je aan het doen bent. :>

{signature}


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Voutloos schreef op maandag 09 juni 2008 @ 11:27:
Als dat wel werkt, is het dankzij het enige functionele verschil: de url. In de startpost staat /tweakers/ en hier staat /tweakers/nieuws . B)

Nofi, maar als je denkt dat commentaar toevoegen helpt, of request en response headers door elkaar haalt, heb je eigenlijk geen idee wat je aan het doen bent. :>
Kusje.

Ik zeg toch het verschil tussen met en zonder commentaar. Als je het commentariseert krijg je de oude feeds omdat je dan geen user-agent meestuurt.

Ik snap wel degelijk wat ik aan het doen ben, had het alleen even verkeerd gezien, waarom nou zo oordelend meteen.

[ Voor 9% gewijzigd door Y0ur1 op 09-06-2008 17:10 ]


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
GlowMouse schreef op maandag 09 juni 2008 @ 11:06:
[...]

Nee, want op de proxy staat een verouderde feed.


[...]

Naar jou ja, niet naar feedburner.


[...]

Met slashes doet die regel helemaal niets. Erg merkwaardig dat het dan plotseling zou gaan werken.
Ik zeg toch: check het verschil tussen met en zonder slashes..

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Je zegt zelf eerst dat dat niet hielp en plaatste vervolgens code met standaard die regel als commentaar, met een wazige opmerking over commentaar. En ik ben blijkbaar niet de enige die dat verkeerd interpreteerde. ;)

Maar goed, mooi dat het dus wel werkt. :)

{signature}

Pagina: 1