Bonjour à tous, mon problème est un peu complexe donc merci à tous ceux qui répondront.

Alors voilà je développe une application web en PHP qui permet de tester des proxies. Elle peut tester un proxy ou plusieurs si une liste est donnée:
Nom : problem.png
Affichages : 211
Taille : 40,6 Ko

Comme vous pouvez le voir sur le screen mon application marche mais je me suis rendu qu'elle marche seulement pour certains type de proxies en effet, les proxies de mon screen sont de ce format la 34.238.1.125:31112:iifh68d6:dr9sg389dfoe7xvD_country-UnitedStates_session-ztbnEDF0 (j'ai changé le mot de passe et le nom d'utilisateur). Un ami à moi à des proxies de ce format là :
snkrs-us-s204.juicedproxies.com:33128:Rtxf5@juicedproxies.net!hu889:GjtykHuONR8MbE

Et c'est ici que j'ai un problème très étrange, lorsque je teste indépendamment un proxy du format de mon amis tout marche bien cependant quand j'en teste plusieurs simultanément, seul le dernier est valide : Nom : problem2.png
Affichages : 202
Taille : 23,9 Ko
Et c'est pareil que je mette à tester 2 ou 10 proxies seul le dernier fonctionne. Je précise que tout les proxies que j'ai on été testé sur un logiciel fonctionnel, donc ils marchent très bien et de toute facon quand je les teste un par un sur mon logiciel ils fonctionnent.

Je ne comprends pas d'ou venait l'erreur du coup j'ai utilisé la fonction curl_error qui me retourne une erreur 407 pour tout les proxies sauf le dernier. C'est ici que je suis bloqué. Je vous affiche le code de ma classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
 
<?php
class ProxyChecker
{
	public $proxy = array();
	public $website;
	public $proxy_information = array();
 
	// les proxies doivent etre aux format ip:port:user:pass, avec un espace entre chaque proxy
	public function setProxy($text)
	{
		$text = str_replace(' ','',$text);
		$proxy = explode(PHP_EOL,$text);
		$i = 0;
		foreach($proxy as $key)
		{
			$this->proxy[$i] = $key; 
			$i++;
		}
	}
	public function setWebsite($url)
	{
		$this->website = $url;
 
	}
	public function display()
	{
		print_r($this->proxy);
	}
	public function explodeProxy($text)
	{
		$proxy  = explode(':',$text);
		$array = array('ip' => $proxy[0], 'port' => $proxy[1], 'user' => $proxy[2] , 'pass' => $proxy[3]);
		return $array;
	}
	// cette fonction est utilisé pour traiter ce que retourne curl après avoir fait la requete 
	public function error_task($i, $array)
	{	
		if($array['http_code'] == 200)
		{
			$this->proxy_information[$i] = array("error" => 0, "time" => round($array['total_time']*1000,0), "speed" => $array['speed_download']);
		}
		elseif($array['http_code'] == 0)
		{
			$this->proxy_information[$i] = array("error" => 1, "time" => 0, "speed" => 0);
		}
		elseif($array['http_code'] == 403)
		{
 
			$this->proxy_information[$i] = array("error" => 2, "time" => round($array['total_time']*1000,0), "speed" => $array['speed_download']);
		}
 
	}
// la fonction de test des proxies
	public function testProxy()
	{
		$i = 0;
		foreach($this->proxy as $key) 
		{
			$proxy = $this->explodeProxy($key);
 
				$url = $this->website;
				$timeout = 10;
 
				$proxy_host = $proxy['ip'].':'.$proxy['port']; // host:port
				$proxy_ident = $proxy['user'].':'.$proxy['pass']; // username:password
 
				$ch = curl_init($url);
				curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
				curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
				curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
				curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
				$ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13';
				curl_setopt($curl, CURLOPT_USERAGENT, $ua);	
				if (preg_match('`^https://`i', $url))
				{
				curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
				curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
				}
				curl_setopt ($ch,CURLOPT_VERBOSE,TRUE);
				curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
				curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
				// Activation de l'utilisation d'un serveur proxy
				curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
 
				// Définition de l'adresse du proxy
				curl_setopt($ch, CURLOPT_PROXY, $proxy_host);
 
				// Définition des identifiants si le proxy requiert une identification
				if ($proxy_ident)
				curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_ident);
 
				$page_content = curl_exec($ch);
				print_r(curl_error($ch))	;
				// traitement des info retourné par curl
				$this->error_task($i,curl_getinfo($ch));
				curl_close($ch);
				$i++;
 
		}
	}
 
 
 
}
?>