Trucs libres

CV Diaspora
en

dimanche 19 décembre 2010

Configuration proxy I2P via un fichier PAC

En ces temps d’Hadopi, je viens de tester le réseau I2P, qui fonctionne plutôt bien.

L’installation est très facile. Il suffit de télécharger le fichier .exe et de le lancer avec la commande java -jar comme indiqué (ça fonctionne sous Linux, oui oui).

Maintenant, si vous souhaitez accéder aux sites en .i2p, comme par exemple http://forum.i2p, vous devez configurer votre navigateur pour utiliser le proxy : localhost:4444

Si vous ne souhaitez pas utiliser le proxy pour vous connecter aux sites normaux non i2p, vous pouvez utiliser l’extension Firefox FoxyProxy.

Vous pouvez aussi utiliser directement un fichier PAC (Proxy Auto-Config) :

function FindProxyForURL(url, host) {
    if (dnsDomainIs(host, ".i2p")) {
        return "PROXY localhost:4444";
    } else {
        return "DIRECT";
    }
}

Ensuite, vous configurez Firefox, ou les préférences proxy de Gnome pour utiliser le fichier file:///chemin/vers/proxy.pac comme configuration.

Attention cependant : avec cette méthode, un eepsite (un site .i2p) mal intentionné peu arriver à détecter votre vraie adresse IP.

Liens :

samedi 30 octobre 2010

Précharger un contenu web avec la balise link prefetch, ou du javascript

Pour la gallerie d’images php Bizou, j’ai cherché différentes manière de précharger l’image suivante pour le mode "visualisation" (exemple).

Sous Firefox, c’est très simple. Il suffit d’utiliser la balise suivante pour que le navigateur précharge les contenus indiqués. Les contenus sont préchargés en arrière-plan une fois que la page courante est chargée intégralement.

<link rel="prefetch" href="/images/nextimage.jpg" />

Sauf que pour le moment seul Firefox supporte cette fonctionnalité. Note : un ticket est ouvert sur le sujet pour le projet Chromium.

Pour les autres navigateurs que Firefox, il faut utiliser du Javascript déclenché à l’événement window.onload :

<script type="text/javascript">
window.onload = function() {
    // pour les images
    var im = new Image();
    im.src = '/images/nextimage.jpg';
    // et pour les autres contenus
    var req = new XMLHttpRequest();
    req.open('GET', 'nextpage.php', false);
    req.send(null);
};
</script>

Attention aux en-têtes HTTP de cache envoyés par le serveur vers le navigateur. Pour un préchargement efficace de page PHP, il faudra que votre script envoie un en-tête Expires.

header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600));

Enfin, pour une détection simple du navigateur depuis le script PHP :

<?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') !== false) { ?>
<link rel="prefetch" href="nextpage.php" />
 
<?php } else { ?>
<script type="text/javascript">
window.onload = function() {
    var req = new XMLHttpRequest();
    req.open('GET', 'nextpage.php', false);
    req.send(null);
};
</script>
<?php } ?>

Liens :