Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 35

/ вопрос открыт /

Как можно послать сообщение web-серверу без броузера, при этом изменяя свой ip на заданный?

Павел Томша Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Павел Томша (статус: Посетитель)
Вопрос отправлен: 6 июня 2006, 21:52
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: bruder

Здравствуйте, Павел.

Например с помощью компонента TClientSocket.

Приложение:
  1. const
  2. WebServer = 'www.somehost.com';
  3. WebPort = 80;
  4. PostAddr = '/cgi-bin/form';
  5.  
  6. ProxyServer ='proxy.somewhere.com';
  7. ProxyPort = 3128;
  8.  
  9.  
  10. HTTP_Data =
  11. 'Content-Type: application/x-www-form-urlencoded'#10+
  12. 'User-Agent: Delphi/5.0 ()'#10+
  13. 'Host: somewhere.com'#10+
  14. 'Connection: Keep-Alive'#10;
  15.  
  16. type
  17. TForm1 = class(TForm)
  18. private
  19. { Private declarations }
  20. HTTP_POST : string;
  21. FContent : string;
  22.  
  23. FResult : string;
  24. public
  25. { Public declarations }
  26. end;
  27.  
  28.  
  29.  
  30.  
  31. function HTTPTran(St: string): string;
  32. var
  33. i: Integer;
  34. begin
  35. Result:='';
  36. for i:=1 to length(St) do
  37. if St[i] in ['a'..'z','A'..'Z','0','1'..'9'] then
  38. Result:=Result+St[i]
  39. else
  40. if St[i]=' ' then
  41. Result:=Result+'+'
  42. else
  43. Result:=Result+'%'+IntToHex(Byte(St[i]),2);
  44. end;
  45.  
  46. procedure TForm1.ClientSocket1Write(Sender: TObject;
  47. Socket: TCustomWinSocket);
  48. begin
  49.  
  50. Socket.SendText(HTTP_POST+FContent);
  51. end;
  52.  
  53. procedure TForm1.ClientSocket1Read(Sender: TObject;
  54. Socket: TCustomWinSocket);
  55. begin
  56.  
  57. FResult:=FResult+Socket.ReceiveText;
  58. end;
  59.  
  60. procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  61. Socket: TCustomWinSocket);
  62. begin
  63.  
  64. end;
  65.  
  66. procedure TForm1.ClientSocket1Error(Sender: TObject;
  67. Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  68. var ErrorCode: Integer);
  69. begin
  70.  
  71. end;
  72.  
  73.  
  74.  
  75.  
  76.  
  77. procedure TForm1.PostTheForm;
  78. begin
  79.  
  80. FResult:='';
  81.  
  82.  
  83.  
  84. FContent:=
  85. 'Name='+ HTTPTran('John Smith') +'&'+
  86. 'Address='+ HTTPTran('1 Waystreet') +'&'+
  87. 'Email='+ HTTPTran('jsmith@somewhere.com') +'&'+
  88. 'B1=Submit' + #10;
  89.  
  90.  
  91. FContent:=
  92. 'Content-Length: '+IntToStr(Length(FContent))+#10+#10+FContent;
  93.  
  94.  
  95. ClientSocket1.Host := ProxyServer;
  96. ClientSocket1.Port := ProxyPort;
  97. HTTP_POST := 'POST http://'+WebServer+PostAddr+' HTTP/1.0'#10;
  98.  
  99.  
  100.  
  101. HTTP_Post := HTTP_Post + HTTP_Data;
  102.  
  103.  
  104. ClientSocket1.Open;
  105. end;
  106.  


Ответ отправил: bruder (статус: 4-ый класс)
Время отправки: 7 июня 2006, 10:43
Оценка за ответ: 5


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:59
Выполнено за 0.02 сек.