Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
gzip decompression, browser (delphi) |

21.03.2010, 20:39
|
|
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме: 4297091
Репутация:
2261
|
|
gzip decompression, browser (delphi)
вопрос:
есть html страница... скажем zalil.ru (для примера)
ответ от сервера при её запросе выглядит так:
Код:
HTTP/1.1 200 OK
Server: nginx/0.3.17
Date: Sun, 21 Mar 2010 16:22:39 GMT
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Connection: keep-alive
e90
<html>
<head>
<title>Хранение файла, бесплатно закачать и скачать</title>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="stylesheet" type="text/css" media="all" href="/style/default.css" />
</head>
<body>
<table id="container">
<tr>
<td id="content">
<div style="position:absolute; top:20px; right:20px; text-align:right;">
<form name="search" action="/page/search" method="get">
<input name="name" type="text" value="Поиск" style="width:200px;" onfocus="this.value=''" onblur="if(this.value=='')this.value='Поиск'">
</form>
<br>
Обладатели Flash Player могут <a href="/page/test">протестировать</a> новый аплоадер.<br><br>
В некоторых подсетях плохая скорость соединения.<br> Ведутся переговоры с хостером, надеемся разрешить эту проблему.
</div>
<div id="center">
<form action="/upload/" name="sendform" enctype="multipart/form-data" method="post" id="sendform" onSubmit="sending()">
<input type="file" name="file" size="53" onFocus="choice()" onclick="choice()">
<input type="submit" name="submit" value=" Send " id="submit">
</form>
<p>Сервис позволяет разместить файл размером не более 50 Мб.<br>
Файл будет удален через 1 месяц после последнего скачивания.</p>
</div>
<script language="JavaScript">
var sendform;
var flag;
setTimeout(function() {
sendform=document.getElementById("sendform");
flag=1;
sendform.submit.disabled=true;
sendform.submit.value=' Send ';
}, 200);
function choice()
{
if(flag==1)
sendform.submit.disabled=false;
}
function sending()
{
sendform.submit.disabled=true;
sendform.submit.value="Sending";
flag=0;
}
</script>
</td>
</tr>
<tr>
<td id="copyright">
<!-- # ECTO*COUNTER-->
<script language="javascript">
document.write('<img s'+'rc="http://support.ecto.ru/counter.php'+
'?i=2&r='+escape(document.referrer)+
'" style="border:0;"/>');
</script>
<noscript>
<img src="http://support.ecto.ru/counter.php?i=2" border="0"/>
</noscript>
<!-- # ECTO*COUNTER-->
<span>©2010 <a href="http://fhn.ru">fhn*createam</a></span>
<a href="/page/">О проекте</a>
<a href="mailto:ad@zalil.ru">Реклама</a>
</td>
</tr>
</table>
<div style="position:absolute;bottom:6;right:10;">
<!--Rating@Mail.ru COUNTEr--><script language="JavaScript" type="text/javascript"><!--
d=document;var a='';a+=';r='+escape(d.referrer)
js=10//--></script><script language="JavaScript1.1" type="text/javascript"><!--
a+=';j='+navigator.javaEnabled()
js=11//--></script><script language="JavaScript1.2" type="text/javascript"><!--
s=screen;a+=';s='+s.width+'*'+s.height
a+=';d='+(s.colorDepth?s.colorDepth:s.pixelDepth)
js=12//--></script><script language="JavaScript1.3" type="text/javascript"><!--
js=13//--></script><script language="JavaScript" type="text/javascript"><!--
d.write('<a href="http://top.mail.ru/jump?from=956201"'+
' target=_top><img src="http://d7.c9.be.a0.top.list.ru/counter'+
'?id=956201;t=84;js='+js+a+';rand='+Math.random()+
'" alt="Рейтинг@Mail.ru"'+' border=0 height=18 width=88/><\/a>')
if(11<js)d.write('<'+'!-- ')//--></script><noscript><a
target=_top href="http://top.mail.ru/jump?from=956201"><img
src="http://d7.c9.be.a0.top.list.ru/counter?js=na;id=956201;t=84"
border=0 height=18 width=88
alt="Рейтинг@Mail.ru"/></a></noscript><script language="JavaScript" type="text/javascript"><!--
if(11<js)d.write('--'+'>')//--></script><!--/COUNTER-->
</div>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2283330-1";
urchinTracker();
</script>
</body>
</html>
0
есть та же самая страница, запрошенная с изпользованием gzip - выглядит она примерно так
Код:
HTTP/1.1 200 OK
Server: nginx/0.3.17
Date: Sun, 21 Mar 2010 16:06:59 GMT
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Connection: keep-alive
Content-Encoding: gzip
a
<тут 10 символов>
6da
<тут 24 строки с разными символами>
0
Собствено вопрос:
1. Откуда считать начало gzip тела (которое длинной 6da) - с начала строки, следующей за строкой с размером и до строки с нулем без учета символов переноса строки перед нулем?
2. как конвертнуть текст gzip обратно в нормальный?
ф-цией (из либы ZLibEx)
Код:
function DecompressString(const aString: string): string;
var
lStr: TStringStream;
lDS: TZDecompressionStream;
begin
lStr := TStringStream.Create(aString);
try
lDS := TZDecompressionStream.Create(lStr);
try
SetLength(Result, lDS.Size);
lDS.Read(Pointer(Result)^, lDS.Size);
finally
lDS.Free;
end;
finally
lStr.Free;
end;
end;
увы не удается - пишет "data error", при том что на вход ф-ции я подаю следующее:
reply:=copy(reply,pos('6da',reply)+3,1754); //1745 это 6da
где reply - изначально полученный мной от сервера ответ.
Прошу показать как с этим справиться конкретно на примере страницы zalil.ru, т.к. она маленькая + неизменяющаяся.
Но можно и на любой другой
ps.
вожусь с этой *ней уже часов 6.
за реальную помощь в решении вопроса преобразования gzip в обычный текст при использовании сокетов (никаких компонет, никакого инди - мне 1000-1500 потоков надо - инди убьет себя) с меня +20
Последний раз редактировалось ErrorNeo; 21.03.2010 в 21:39..
|
|
|
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Видео уроки Delphi
|
][imer |
С/С++, C#, Delphi, .NET, Asm |
48 |
18.04.2010 09:05 |
|
Литература Delphi
|
Sams |
С/С++, C#, Delphi, .NET, Asm |
2 |
19.03.2010 19:46 |
|
Books
|
PSalm69 |
Избранное |
248 |
27.10.2009 04:52 |
|
Virus.Win32.Induc.a или "Снова записки новичка"
|
_=(mac)=_ |
Защита ОС: вирусы, антивирусы, файрволы. |
5 |
24.08.2009 23:34 |
|
Новая версия Avant Browser 10.2 Build 51
|
Zek |
Soft - Windows |
3 |
29.04.2006 19:52 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|