Advertisement
Guest User

Untitled

a guest
Jun 28th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.23 KB | None | 0 0
  1. unit main;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8. Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, HttpSend;
  9.  
  10. type
  11.  
  12. { TForm1 }
  13.  
  14. TForm1 = class(TForm)
  15. Button1: TButton;
  16. Memo1: TMemo;
  17. procedure Button1Click(Sender: TObject);
  18. private
  19. { private declarations }
  20. public
  21. { public declarations }
  22. end;
  23.  
  24. THTTPSend_ = class helper for THTTPSend
  25. public
  26. function HeaderNameByIndex(index: integer): string;
  27. function HeaderByName(const HeaderName: string): string;
  28. // function HTTPMethod(const Method, URL: string): Boolean;
  29. end;
  30.  
  31. var
  32. Form1: TForm1;
  33. UserKey: string;
  34.  
  35. implementation
  36.  
  37. uses md5, zstream{,synautil};
  38.  
  39. function GetIp: string;
  40. var
  41. HTTP: THTTPSend;
  42. s, c: string;
  43. i, n: integer;
  44. ss: TStringList;
  45. begin
  46. Result := '';
  47. HTTP := THTTPSend.Create;
  48. ss := TStringList.Create;
  49. try
  50. if HTTP.HTTPMethod('GET', 'http://rl.ammyy.com') then
  51. begin
  52. ss.LoadFromStream(HTTP.Document);
  53. if ss.Count >= 1 then
  54. begin
  55. s := ss[0];
  56. c := '';
  57. n := 0;
  58. for i := 1 to Length(s) do
  59. begin
  60. if s[i] = ',' then
  61. break;
  62. if n = 1 then
  63. c := c + s[i];
  64. if s[i] = '=' then
  65. n := n + 1;
  66. end;
  67. end;
  68. end;
  69. finally
  70. HTTP.Free;
  71. Result := c;
  72. ss.Free;
  73. end;
  74. end;
  75.  
  76. function GetUserKey: string;
  77. var
  78. userAgent: string;
  79. ip: string;
  80. scrVar: string;
  81. str: string;
  82. begin
  83. ip := GetIP;
  84. userAgent :=
  85. 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36';
  86. scrVar := IntToStr(Screen.DesktopWidth * Screen.DesktopHeight * 24);
  87. str := format('%s : %s : %s', [ip, userAgent, 'win32' + scrVar]);
  88. Result := MD5Print(MD5String(str));
  89. end;
  90.  
  91. function THTTPSend_.HeaderNameByIndex(index: integer): string;
  92. begin
  93. if (index > (Headers.Count - 1)) or (index < 0) then
  94. Exit;
  95. Result := copy(Headers[index], 0, pos(':', Headers[index]) - 1);
  96. end;
  97.  
  98. function THTTPSend_.HeaderByName(const HeaderName: string): string;
  99. var
  100. i: integer;
  101. begin
  102. for i := 0 to Headers.Count - 1 do
  103. begin
  104. if LowerCase(HeaderNameByIndex(i)) = lowercase(HeaderName) then
  105. begin
  106. Result := copy(Headers[i], pos(':', LowerCase(Headers[i])) +
  107. 2, Length(Headers[i]) - length(HeaderName));
  108. break;
  109. end;
  110. end;
  111. end;
  112.  
  113. {
  114. function THTTPSend_.HTTPMethod(const Method, URL: string): Boolean;
  115. var Heads: TStringList;
  116. Cooks: TStringList;
  117. Redirect: string;
  118. Doc:TMemoryStream;
  119. begin
  120. try
  121. Heads:=TStringList.Create;
  122. Cooks:=TStringList.Create;
  123. Doc:=TMemoryStream.Create;
  124. Doc.LoadFromStream(Document);
  125. Cooks.Assign(Cookies);
  126. Heads.Assign(Headers);
  127. Result:=inherited HTTPMethod(Method,URL);
  128. if (ResultCode=301)or(ResultCode=302) then
  129. begin
  130. Redirect:=HeaderByName('location');
  131. Headers.Assign(Heads);
  132. Document.Clear;
  133. Document.LoadFromStream(Doc);
  134. Cookies.Assign(Cooks);
  135. Result:=inherited HTTPMethod(Method,Redirect);
  136. end;
  137. finally
  138. FreeAndNil(Heads);
  139. FreeAndNil(Cooks);
  140. FreeAndNil(Doc)
  141. end;
  142. end;}
  143.  
  144. {$R *.lfm}
  145.  
  146. { TForm1 }
  147. //var user_key = hex_md5('62.117.82.116'+':'+navigator.userAgent+':'+navigator.platform+((typeof(screen)!='undefined') ? ':'+screen.width+'*'+screen.height+'*'+(screen.colorDepth ? screen.colorDepth : screen.pixelDepth):''));
  148. procedure TForm1.Button1Click(Sender: TObject);
  149. var
  150. hSend: THTTPSend;
  151. ss, content: TStringStream;
  152. pData: string;
  153. Gzf: TGZFileStream;
  154. begin
  155. pdata := Format(
  156. 'referer=http://www.yaplakal.com/&user_key=%s&UserName=%s&PassWord=%s&submit=Вход&CookieDate=1&Secure=1',
  157. [GetUserKey, '', '']);
  158. hSend := THttpSend.Create;
  159. ss := TStringStream.Create(pData);
  160. hSend.Document.LoadFromStream(ss);
  161. try
  162. hSend.UserAgent :=
  163. 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36';
  164. hSend.TargetHost := 'yaplakal.com';
  165. hSend.MimeType := 'application/x-www-form-urlencoded';
  166. hSend.KeepAlive := True;
  167. hSend.Headers.Add('Accept-Encoding: gzip,deflate');//заголовок
  168. hSend.Headers.Add('Upgrade-Insecure-Requests: 1');
  169. hSend.Headers.Add('Cache-Control: max-age=0');
  170. hSend.Headers.Add(
  171. 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8');
  172. hSend.Headers.Add('Referer: http://www.yaplakal.com/');
  173. hSend.Headers.Add('Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4');
  174. hSend.Protocol := '1.1';//по умолчанию выставляется 1.0
  175. if hsend.HTTPMethod('post', 'http://www.yaplakal.com/act/Login/CODE/01/') then
  176. begin
  177.  
  178. {if hsend.ResultCode=302 then begin}
  179. Memo1.Lines.Add('Отправка запроса. Ответ сервера');
  180. Memo1.Lines.Add('-----Cokies-----');
  181. Memo1.Lines.add(hSend.Cookies.Text);
  182. Memo1.Lines.Add('-----Headers-----');
  183. Memo1.Lines.add(hSend.Headers.Text);
  184. Memo1.Lines.Add('-----Data-----');
  185. hSend.Headers.NameValueSeparator := ':';
  186. // Memo1.Lines.Add(hSend.Headers.Values['Content-Encoding']);
  187. if (CompareText(trim(hSend.Headers.Values['Content-Encoding']), 'gzip') = 0) then
  188. begin
  189. //GetLocation()
  190. hSend.Document.SaveToFile('tmp.gz');
  191. gzf := TGZFileStream.Create('tmp.gz', gzopenread);
  192. // hSend.Document.SaveToStream(gzf);
  193. content := TStringStream.Create('');
  194. try
  195. content.CopyFrom(gzf, 0);
  196. Memo1.Lines.Text := content.DataString;
  197. finally
  198. gzf.Free;
  199. content.Free;
  200. end;
  201. end
  202. else
  203. begin
  204. content := TStringStream.Create('');
  205. try
  206. hSend.Document.Position := 0;
  207. hSend.Document.SaveToStream(content);
  208.  
  209. Memo1.Lines.Add(content.DataString);
  210. finally
  211. // gzf.Free;
  212. content.Free;
  213. end;
  214. end;
  215.  
  216. // end;
  217. {end else showmessage('Не получилось!');}
  218.  
  219. end;
  220. finally
  221. ss.Free;
  222. hSend.Free;
  223. end;
  224.  
  225. // memo1.Lines.Add(GetUserKey);
  226. end;
  227.  
  228. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement