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

03.01.2009, 01:35
|
|
Новичок
Регистрация: 30.07.2007
Сообщений: 20
Провел на форуме: 69606
Репутация:
2
|
|
[Delphi] Помощь по Synapse
Доброе время суток, форумчане.
Такой вопрос. Пишу регелку аккаунтов для сервисов соц. закладок.
Только начал. Пользуюсь пакетом Synapse для реализации сетевых запросов.
Принцип следующий:
1) Прога запрашивает капчу со страницы регистрации методом GET
2) Юзер вводит символы с капчи и отправляет POST, все остальные данные логин, пароль и е-майл, вводятся сами
Проблема - я не знаю почему но в ответе от сервера, после метода POST, приходит ошибка 411 =(
|
|
|

03.01.2009, 02:42
|
|
Участник форума
Регистрация: 03.01.2008
Сообщений: 104
Провел на форуме: 400001
Репутация:
111
|
|
Мм, не знаком с Синапсом, пользуюсь Indy или сокетами для сетевых программ. Но тоже встречался с этой ошибкой - твоя прога не передаёт Content-Length, в нём должен быть размер передаваемых даннх ака length(PostedData), Прописывается при сборе пакета как хост, рефер, кукисы, браузер и т.д. Так же у меня был глюк, что вроде передавал размер, но не правильной длинны - было из-за того что передавался некий текст, кодирующийся с помощью UrlEncode, в программе оставляющей только A-Z, a-z, 0-9 и " _", а сервак принимал так же незакодированые " ." и " *", Соответственно длина в моей проге и то что считалось на серваке не сходилось, и выдавалась та же ошибка 
|
|
|

03.01.2009, 19:57
|
|
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме: 1747641
Репутация:
175
|
|
Скорее всего либо не туда отправляешь, либо параметры передаешь неверные.
|
|
|

19.02.2009, 23:36
|
|
Постоянный
Регистрация: 06.05.2007
Сообщений: 393
Провел на форуме: 1510937
Репутация:
398
|
|
Код:
unit Bugagu;
interface
uses Windows, WinInet;
function UrlEncode(Str: string): string;
function UrlDecode(Str: string): string;
function GetFileData(szFile: PChar): PChar;
procedure Send_POST_Data(Const szHost, szPath, szData: PChar);
implementation
function UrlEncode(Str: string): string;
function CharToHex(Ch: Char): Integer;
asm
and eax, 0FFh
mov ah, al
shr al, 4
and ah, 00fh
cmp al, 00ah
jl @@10
sub al, 00ah
add al, 041h
jmp @@20
@@10:
add al, 030h
@@20:
cmp ah, 00ah
jl @@30
sub ah, 00ah
add ah, 041h
jmp @@40
@@30:
add ah, 030h
@@40:
shl eax, 8
mov al, '%'
end;
var
i, Len: Integer;
Ch: Char;
N: Integer;
P: PChar;
begin
Result := '';
Len := Length(Str);
P := PChar(@N);
for i := 1 to Len do
begin
Ch := Str[i];
if Ch in ['0'..'9', 'A'..'Z', 'a'..'z', '_'] then
Result := Result + Ch
else
begin
if Ch = ' ' then
Result := Result + '+'
else
begin
N := CharToHex(Ch);
Result := Result + P;
end;
end;
end;
end;
function UrlDecode(Str: string): string;
function HexToChar(W: word): Char;
asm
cmp ah, 030h
jl @@error
cmp ah, 039h
jg @@10
sub ah, 30h
jmp @@30
@@10:
cmp ah, 041h
jl @@error
cmp ah, 046h
jg @@20
sub ah, 041h
add ah, 00Ah
jmp @@30
@@20:
cmp ah, 061h
jl @@error
cmp al, 066h
jg @@error
sub ah, 061h
add ah, 00Ah
@@30:
cmp al, 030h
jl @@error
cmp al, 039h
jg @@40
sub al, 030h
jmp @@60
@@40:
cmp al, 041h
jl @@error
cmp al, 046h
jg @@50
sub al, 041h
add al, 00Ah
jmp @@60
@@50:
cmp al, 061h
jl @@error
cmp al, 066h
jg @@error
sub al, 061h
add al, 00Ah
@@60:
shl al, 4
or al, ah
ret
@@error:
xor al, al
end;
function GetCh(P: PChar; var Ch: Char): Char;
begin
Ch := P^;
Result := Ch;
end;
var
P: PChar;
Ch: Char;
begin
Result := '';
P := @Str[1];
while GetCh(P, Ch) <> #0 do
begin
case Ch of
'+': Result := Result + ' ';
'%':
begin
Inc(P);
Result := Result + HexToChar(PWord(P)^);
Inc(P);
end;
else
Result := Result + Ch;
end;
Inc(P);
end;
end;
function GetFileData(szFile: PChar): PChar;
var
hFile, dwSize, dwBytes: DWORD;
begin
Result := '';
hFile := CreateFile(szFile, GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
if hFile <> INVALID_HANDLE_VALUE then
begin
dwSize := GetFileSize(hFile, nil);
Result := VirtualAlloc(nil, dwSize, MEM_COMMIT, PAGE_READWRITE);
ReadFile(hFile, Result^, dwSize, dwBytes, nil);
end;
CloseHandle(hFile);
end;
procedure Send_POST_Data(Const szHost, szPath, szData: PChar);
var
hOpenHandle, hConnectHandle, hResourceHandle: Pointer;
begin
hOpenHandle := InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if hOpenHandle <> nil then
begin
hConnectHandle := InternetConnect(hOpenHandle, szHost, 80, nil, nil, 3, 0, 0);
if hConnectHandle<>nil then
begin
hResourceHandle := HttpOpenRequest(hConnectHandle, 'POST', szPath, nil, nil, nil, INTERNET_FLAG_KEEP_CONNECTION, 0);
if hResourceHandle <> nil then
begin
HttpSendRequest(hResourceHandle, 'Content-Type: application/x-www-form-urlencoded', 47, szData, lstrlen(szData));
end;
InternetCloseHandle(hResourceHandle);
end;
InternetCloseHandle(hConnectHandle);
end;
InternetCloseHandle(hOpenHandle);
end;
|
|
|

02.08.2009, 20:22
|
|
Участник форума
Регистрация: 22.11.2008
Сообщений: 142
Провел на форуме: 636446
Репутация:
32
|
|
Люди, а может кто знает пример HTTPS клиента с использованием сокетов и библиотеки OpenSSL?
Подскажите пожал.
|
|
|

24.08.2009, 17:54
|
|
Познающий
Регистрация: 17.03.2007
Сообщений: 98
Провел на форуме: 193152
Репутация:
45
|
|
Подскажите по этой ф-ии
PHP код:
function GetFileData(szFile: PChar): PChar;
var
hFile, dwSize, dwBytes: DWORD;
begin
Result := '';
hFile := CreateFile(szFile, GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
if hFile <> INVALID_HANDLE_VALUE then
begin
dwSize := GetFileSize(hFile, nil);
Result := VirtualAlloc(nil, dwSize, MEM_COMMIT, PAGE_READWRITE);
ReadFile(hFile, Result^, dwSize, dwBytes, nil);
end;
CloseHandle(hFile);
end;
При отладке смотрю переменную result и вот косяк - текстовый файл читается замечательно, а вот бинарник только первые 5-10 байт. Как победить?
Последний раз редактировалось 2pick; 24.08.2009 в 21:14..
|
|
|

27.08.2009, 09:42
|
|
Новичок
Регистрация: 14.08.2009
Сообщений: 16
Провел на форуме: 33794
Репутация:
0
|
|
интересует ответ хотя бы на один из вопросов:
1. как перекинуть куки из Synapse в Indy?
Код:
Form1.IdCookieManager1.AddCookie(HTTP.Cookies.Text,'XXX.com');
Form1.Memo1.Text:=Form1.IdHTTP1.Get('http://XXX.com/');
при выполнении form1.idhttp1.get пишет HTTP/1.1 400 Bad Request.
программу ничто не блокирует и сайт доступен
2. Есть ли в Synapse что-то наподобии TIdMultiPartFormDataStream, если да то как его юзать?
|
|
|

28.08.2009, 10:56
|
|
Banned
Регистрация: 01.07.2009
Сообщений: 21
Провел на форуме: 38138
Репутация:
-5
|
|
служба поддержки VDS manager
591-493-245
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|