Je cherche à configurer curl pour utiliser un serveur proxy. L'url est fournie par un formulaire html, ce qui n'a pas posé de problème. Sans le proxy, cela fonctionne bien. J'ai trouvé du code sur ce site et sur d'autres, mais ils ne fonctionnent pas. Toute aide pour trouver la bonne solution serait très appréciée. Je sens que les soufflets sont proches, mais qu'il me manque quelque chose. Merci.
Le code ci-dessous, j'ai adapté d'ici http://www.webmasterworld.com/forum88/10572.htm mais il renvoie un message d'erreur concernant un T_VARIABLE manquant à la ligne 12.
<?
$url = '$_POST[1]';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1)
curl_exec ($ch);
$curl_info = curl_getinfo($ch);
curl_close($ch);
echo '<br />';
print_r($curl_info);
?>
Le soufflet est de curl à proxy ne renvoie aucun contenu
<?
$proxy = "66.96.200.39:80";
$proxy = explode(':', $proxy);
$url = "$_POST[1]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy[0]);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]);
curl_setopt($ch, CURLOPT_HEADER, 1);
$exec = curl_exec($ch);
echo curl_error($ch);
print_r(curl_getinfo($ch));
echo $exec;
?>
est actuellement en ligne sur pelican-cement.com mais ne fonctionne pas non plus.
MISE À JOUR: Merci pour toute votre aide, j'ai apporté les modifications ci-dessus. Maintenant, il ne renvoie qu'un écran vide.
<?
$url = $_POST['1'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_exec ($ch);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
echo $curl_scraped_page;
?>
$_POST['1']
Réponses:
Voici une version fonctionnelle avec vos bogues supprimés.
J'ai ajouté
CURLOPT_PROXYUSERPWD
au cas où l'un de vos mandataires nécessiterait un nom d'utilisateur et un mot de passe. J'ai misCURLOPT_RETURNTRANSFER
à 1, de sorte que les données soient renvoyées à la$curl_scraped_page
variable.J'ai supprimé un deuxième supplément
curl_exec($ch);
qui empêcherait le retour de la variable. J'ai consolidé votre adresse IP et votre port proxy en un seul paramètre.J'ai également supprimé
CURLOPT_HTTPPROXYTUNNEL
etCURLOPT_CUSTOMREQUEST
comme c'était la valeur par défaut.Si vous ne voulez pas que les en-têtes soient renvoyés, commentez
CURLOPT_HEADER
.Pour désactiver le proxy, définissez-le simplement sur null.
N'hésitez pas à poser toutes les questions, je travaille avec
cURL
tous les jours.la source
J'ai expliqué l'utilisation de diverses options CURL requises pour CURL PROXY.
la source
Voici une fonction bien testée que j'ai utilisée pour mes projets avec des commentaires détaillés et explicites
Il arrive souvent que les ports autres que 80 soient bloqués par le pare-feu du serveur, de sorte que le code semble fonctionner correctement sur localhost mais pas sur le serveur
la source
/etc/ssl/certs
sur Debian / Ubuntu, par exemple)