![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Доброе время суток... 
		
	
		
		
			Спаял я прокси чекер по уроку на ютабе.. У человека на видео всё работает. Рабочие прокси помечаются good, плохие bad.. У меня же все прокси помечаются как bad. Не могли бы вы мне помочь, где я допустил ошибку? Прокси - SOCKS. Нашёл в интернете, из разных источников, всего их у меня 115 шт. И все без исключений помечаются как bad. В потоках стоит условие, если гет запрос сработал, значит прокся валидная, и переменной rez присваивается 1. В противном случае rez = -1 На форме 2 кнопки(старт, стоп), 1 трэкбар(количество потоков) и 1 мемо, в который выводится прокси, без пометки - гуд, с пометкой - бэд. В общем вот весь код программы: Код: 
	unit Unit1;
interface
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, sMemo, Vcl.ComCtrls, sTrackBar, Vcl.Buttons,
  sSpeedButton, httpsend, System.SyncObjs;
type
  TForm1 = class(TForm)
    sSpeedButton1: TsSpeedButton;
    sSpeedButton2: TsSpeedButton;
    sSpeedButton3: TsSpeedButton;
    sTrackBar1: TsTrackBar;
    sMemo1: TsMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure sSpeedButton2Click(Sender: TObject);
    procedure sSpeedButton3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
  th = class(TThread) // поток
  private
    { Private declarations }
    IP, Port: string;
    rez: Integer; // результат, принимает либо 1-гуд, либо -1-бэд
  public
    CurProxy: Integer; // переменная, для передачи потоку номера строки в стринглисте
    http: THTTPSend;
    { Public declarations }
    procedure Sync;
  protected
    procedure execute; override;
  end;
var
  Form1: TForm1;
  Proxys: TStringList;  // стринглист
  Proxy, thread: Integer; 
  WORK: Boolean;
  CS: TCriticalSection; // критическая секция
  
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  Proxys := TStringList.Create;
  CS := TCriticalSection.Create;
  Proxys.LoadFromFile('c:/ProxySocks5.txt'); // загружаю прокси в стринглист
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(Proxys);
  FreeAndNil(CS);
end;
procedure TForm1.sSpeedButton2Click(Sender: TObject);
begin
  Proxy := -1; // -1, так как в потоке она будет увеличиваться, и начнется с 0
  WORK := True; // для работы потока
  for thread := 1 to sTrackBar1.Position do // количество потоков
  begin
    th.Create(False);
  end;
end;
procedure TForm1.sSpeedButton3Click(Sender: TObject);
begin
WORK := False; // остановить потоки
end;
{ TMyThread }
procedure th.execute;
begin
  while WORK do
  begin
    CS.Enter;
    Inc(Proxy);
    if Proxy < Proxys.Count then
    begin
      CurProxy := Proxy;
    end
    else
    begin
      WORK := False;
    end;
    CS.Leave;
    { ----------------------------------- }
    if WORK then
    begin
      http := THTTPSend.Create;
      IP := Copy(Proxys[CurProxy], 1, Pos(':', Proxys[CurProxy]) - 1);   // копируем айпи из строки в стринглисте
      Port := Copy(Proxys[CurProxy], Pos(':', Proxys[CurProxy]) + 1, Length(Proxys[CurProxy])); // копируем порт из строки в стринглисте
      http.Sock.SocksIP := IP; 
      http.Sock.SocksPort := Port;
      http.Document.Clear;
      http.Headers.Clear;
      http.Sock.SocksTimeout := 2000;
      http.Sock.SocksResolver := false;
      http.Protocol := '1.1';
      if http.HTTPMethod('get', 'https://google.ru') then  // если запрос прошёл, значит прокся валидная
      begin
        rez := 1; // если валидная то присваиваем 1
      end
      else
      begin
        rez := -1;  // если не валидная то -1
      end;
      http.Free;
      Synchronize(Sync); 
    end;
  end;
end;
procedure th.Sync;
begin
  case rez of
    1:
      begin
        Form1.sMemo1.Lines.Add(IP + ':' + Port);  // валид
      end;
    -1:
      begin
       Form1.sMemo1.Lines.Add('BAD  ' + IP + ':' + Port); // не валид
      end;
  end;
end;
end.Мои прокси - ProxySocks5.txt Последний раз редактировалось Gareth, 11.03.2020 в 00:11.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 помогитее) 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Ну, для начала убираем установку проксей и проверяем, что код вообще работает.  
		
	
		
		
		
		
		
	
		
		
	
	
	Потом смотрим, а у тебя действительно SOCKS прокси в списке? А порты у тебя открыты соответсвующие (на компе и на роутере)? Т.е. берем ручками один адрем и пробуем telnet'ом зайти по нужному порту. Если все ок, то взгляни вот тут: https://stackoverflow.com/questions/...-tidwhois?rq=1 Не уверен, что это для той версии, там были изменения, но попробовать стоит.  | 
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
 
Gareth (11.03.2020)
  | ||
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 а какой именно порт нужно открыть? Я немного не понял, мне что нужно открыть все порты, которые юзаются в проксях? их же может быть тысячи... Последний раз редактировалось Gareth, 11.03.2020 в 23:56.  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Скорее всего нет. Просто надо проверить, для того, что бы быть увереным, что ничего не мешает. Попробуй подключиться через telnet. Если подключение проходит, то ничего не мешает и можно уже проверять свой код. На эту тему см вот этот пост: https://stackoverflow.com/questions/...p-socks-socks5 
		
	
		
		
		
		
		
	
		
		
	
	
	Там, вроде, у чувака все работает (у него проблема в другом).  | 
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
 
Gareth (12.03.2020)
  | ||