tontof / kriss_feed

A simple and smart (or stupid) feed reader
280 stars 54 forks source link

Fatal Error XML 77 #425

Closed Nono-m0le closed 3 years ago

Nono-m0le commented 3 years ago

J'ai l'erreur suivante lorsque j'essaye de rajouter ce flux: https://www.vmware.com/security/advisories.xml

Fatal Error XML 77: Fatal Error XML 77: Premature end of data in tag HTML line 1

tontof commented 3 years ago

Effectivement, le site filtre par user-agent... Voici la page retournée :

Access Denied
You don't have permission to access "http://www.vmware.com/security/advisories.xml" on this server.

Reference #...

ce qui donne la même erreur Fatal Error XML. Ça fonctionne si je change le user-agent je n'ai plus l'erreur.

Nono-m0le commented 3 years ago

Une solution (sous forme de paramètres ou plugin) pour faire marcher ça dans kriss feed?

tontof commented 3 years ago

Je n'ai pas le temps de tester mais j'imagine dans un fichier useragent.php dans le dossier plugins

<?php
MyTool::$opts = array(
    'http' => array(
        'timeout' => 4,
        'user_agent' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0',
    )
);
?>
Nono-m0le commented 3 years ago

pour l'instant je n'ai "que" ca dans le dossier plugins :

sessions.php:
<?php
ini_set("session.gc_maxlifetime", '86400');
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'].'/sessions');

timeout.php:
<?php
MyTool::$opts['http']['timeout'] = '10';

Ce qui m'affiche un joli array(0) { } quand je vais sur https://kriss/?plugins

rajouter un fichier useragent.php (avec le ?> ou sans) ne change pas la donne ...

tontof commented 3 years ago

Ça fonctionne chez moi avec le code que j'ai donné avant. Pour ne pas écraser timeout, dans un useragent.php avec :

<?php
MyTool::$opts['http']['user_agent'] = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0';

Ça fonctionne aussi, je pense qu'il y a peut-être un autre filtre sur l'IP par exemple qui fait que ça te bloque (hébergement mutualisé ?).

Nono-m0le commented 3 years ago

Je suis sur un dédié, mais je me demande si c'est pas un problème général vu learray(0) { } quand je vais sur https://kriss/?plugins (sans rien ajouter)

tontof commented 3 years ago

Ce lien n'est pas vraiment actif : https://github.com/tontof/kriss_feed/blob/master/index.php#L3535 C'était un début de configuration de plugins que je n'ai pas terminé. J'ai la même chose de mon côté et ça fonctionne bien. Essaye de faire un wget directement dans un terminal pour voir si tu récupères bien le flux RSS ?

Nono-m0le commented 3 years ago

Ah ben non :/

wget https://www.vmware.com/security/advisories.xml
--2021-05-21 14:00:34--  https://www.vmware.com/security/advisories.xml
Resolving www.vmware.com (www.vmware.com)... 2a02:26f0:2b00:398::2ef, 2a02:26f0:2b00
:3ba::2ef, 2.21.16.28
Connecting to www.vmware.com (www.vmware.com)|2a02:26f0:2b00:398::2ef|:443... connec
ted.
HTTP request sent, awaiting response... 403 Forbidden
2021-05-21 14:00:34 ERROR 403: Forbidden.
tontof commented 3 years ago

Ça ne me surprend pas vraiment, après il faudrait peut-être utiliser un user-agent avec wget pour être sûr parce que là c'est peut-être juste leur premier filtre qui bloque.

Nono-m0le commented 3 years ago

Bon, je reviens dessus car ca m'embête toujours encore. un wget --user-agent=Mozilla https://www.vmware.com/security/advisories.xml fonctionne, mais pas avec mon useragent.php :

<?php
MyTool::$opts['http']['user_agent'] = 'Mozilla';

Me donne : Fatal Error XML 77: Fatal Error XML 77: Premature end of data in tag HTML line 1

tontof commented 3 years ago

Tu peux essayer avec curl ? De mon côté ça fonctionne avec wget mais pas curl... Je ne sais pas comment c'est possible de détecter si c'est curl ou wget mais comme avec php ça utilise curl, il faudrait comprendre pourquoi ça fait ça. J'ai le même problème avec un script pour le bon coin. Je ne sais pas comment ils font pour différencier l'appel d'un navigateur ou d'une ligne de commande

Nono-m0le commented 3 years ago

curl -v -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en' -H 'Connection: Keep-Alive' https://www.vmware.com/security/advisories.xml -o advisories.xml.gz fonctionne

tontof commented 3 years ago

Parfait, c'est juste le header Connection qu'il faut ajouter Ça fonctionne de mon côté. Si tu utilises le dernier index.php https://raw.githubusercontent.com/tontof/kriss_feed/master/src/index.php Tu crées un fichier connection.php dans plugins

<?php
MyTool::$opts['http']['headers'][] = 'Connection: Keep-Alive';

Ça devrait fonctionner (il faut aussi le fichier useragent)

Nono-m0le commented 3 years ago

j'ai toujours un Fatal Error XML 77: Fatal Error XML 77: Premature end of data in tag HTML line 1 avec:

/rss/plugins# grep -r "" *
connection.php:<?php
connection.php:MyTool::$opts['http']['headers'][] = 'Connection: Keep-Alive';
sessions.php:<?php
sessions.php:ini_set("session.gc_maxlifetime", '86400');
sessions.php:ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'].'/sessions');
timeout.php:<?php
timeout.php:MyTool::$opts['http']['timeout'] = '10';
useragent.php:<?php
useragent.php://MyTool::$opts['http']['user_agent'] = 'Mozilla';
useragent.php:MyTool::$opts['http']['user_agent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15';
rss# sha256sum index.php
9ea31a97ccc42f30156a69b9338ab741ced203c18504b5a3fb762c1eb4db4bde  index.php
tontof commented 3 years ago

Bizarre, de mon côté j'ai :

$ grep -r "" *
headers.php:<?php
headers.php:MyTool::$opts['http']['headers'][] = 'Connection: Keep-Alive';
timeout.php:<?php
timeout.php:MyTool::$opts['http']['timeout'] = 10;
useragent.php:<?php
useragent.php:MyTool::$opts['http']['user_agent'] = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0';
$ sha256sum index.php 
9ea31a97ccc42f30156a69b9338ab741ced203c18504b5a3fb762c1eb4db4bde  index.php

En gros je n'ai pas les sesssions... et mon timeout est entier, ce n'est pas une chaine de caractères...

Nono-m0le commented 3 years ago

Il n'y a pas de cache ou justement de sessions à supprimer hein ?

tontof commented 3 years ago

Non je ne pense pas. C'est vraiment bizarre si ça marche en ligne de commande à partir du même serveur, je ne vois pas ce qui pourrait changer.

tontof commented 3 years ago

Essaye en ajoutant

MyTool::$opts['http']['headers'][] = 'Accept-Language: en';

Et si ça marche pas :

MyTool::$opts['http']['headers'][] = 'Accept-Language: en';
MyTool::$opts['http']['headers'][] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
Nono-m0le commented 3 years ago

yes, ca marche :) Merci

tontof commented 3 years ago

\o/