Tor с curl и & quot; Не удается завершить соединение SOCKS5 с 0.0.0.0:0"

Я использую программное обеспечение Vidalia Bridge с curl и PHP для очистки некоторых веб-сайтов. Есть этот веб-сайт, который каким-то образом дает мне сообщение «Не удается завершить соединение SOCKS5 с 0.0.0.0:0» каждый раз, когда у меня есть 11 или более одновременных запросов.
3 недели назад, когда я в последний раз проверял его, раньше было 31 или более запросов, пока я не получил сообщение об ошибке сверху, теперь это 11.

Редактировать:
Вот схема, поясняющая, что принадлежит мне (может контролировать), а что удаленно (не может контролировать), а также полные взаимосвязи между компонентами.

Нажмите для диаграммы

Мой вопрос:
Связано ли это с веб-сайтом (могут ли они контролировать количество запросов в секунду, учитывая, что я использую разные файлы cookie для каждого запроса), или это связано с настройками vidalia / curl.

Изменить: вот моя конфигурация:
Я использую Java с несколькими потоками, каждый поток имеет доступ к локальному PHP-скрипту, который выполняет роль очистки сайта, заданного в качестве параметра GET. Скрипт PHP использует CURL с 9050 в качестве порта для TOR (Vidalia Bridge) для очистки веб-сайтов .onion.

Редактировать 2: (Подробнее)
Я использую:
а) XAMPP для окон:

б) Vidalia Bridge Bundle:

Вот код в PHP: (curlSample.php)

<?php
$ch = curl_init();
/*
********************************
Comment or uncomment below
*/

$url="http://alphabaywyjrktqn.onion/";
//$url="http://nucleuspf3izq7o6.onion/";

/*
Comment or uncomment above
********************************
*/


curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set Vidalia Bridge (Tor proxy socks connection)
curl_setopt($ch, CURLOPT_PROXY, "http://127.0.0.1:9050");
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
$output = curl_exec($ch);
$curl_error = curl_error($ch);
if(strlen($curl_error) > 0){
echo $curl_error;
exit();
}
echo $output;

Вот код на Java:
а) AlphaTestConnections.java

import java.util.ArrayList;
public class AlphaTestConnections {

public static void main(String[] args){
int start=0;
int end=20;
ArrayList<Thread> threads = new ArrayList<Thread>();
for(int i=start; i<end; i++){
threads.add(new Thread(new AlphaTestConnectionsThread(i)));
}
for(int i=0; i<threads.size(); i++){
threads.get(i).start();
}
for(int i=0; i<threads.size(); i++){
try {
threads.get(i).join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("done");
}
}

б) AlphaTestConnectionsThread.java

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class AlphaTestConnectionsThread implements Runnable{

private final static String USER_AGENT = "Mozilla/5.0";
private static String request() {
try{
URL obj = new URL("http://localhost/curlSample.php");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();

// optional default is GET
con.setRequestMethod("GET");

//add request header
con.setRequestProperty("User-Agent", USER_AGENT);


BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}

in.close();

// Return first 50 characters from source code (enough to test this)
return response.toString().substring(0, 50);
}catch(Exception e){
System.out.println("Exception");
e.printStackTrace();
}
return null;

}

private int i;
public AlphaTestConnectionsThread(int i){
this.i=i;
}
@Override
public void run() {

System.out.println("Thread #" + i + ": " + request());

}
}

Чтобы протестировать код, вам сначала нужно запустить Apache в Xampp, а затем запустить пакет Vidalia Bridge,

Старт Моста Видалия

создайте файл curlSample.php в корневом каталоге Xampp, затем запустите AlphaTestConnections.java.
Вы увидите, что для 20 соединений 10 вернет исходный код, а 10 выдаст ошибку «Не удается завершить соединение SOCKS5 с 0.0.0.0:0».
Теперь отредактируйте curlSample.php и прокомментируйте / раскомментируйте код, чтобы использовать второй URL. Теперь он вернет исходный код для всех 20 соединений, без каких-либо ошибок.
Я хотел бы знать, как это возможно, почему существует ограничение в 10 одновременных подключений для определенного веб-сайта и как я могу его удалить?

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]