Новые сообщения · Участники · Правила форума · Поиск · RSS
  • Страница 1 из 1
  • 1
Ввод телефона в вк, или как обойти систему.
Дата: Вторник, 15.10.2013, 12:25 | Сообщение # 1
Директор
Сообщений:
4868
Награды:
10
Репутация:
133
Ввод телефона в вк, или как обойти систему.


В ВК довольно таки давно, усовершенствовали Проверку безопасности

теперь нужно вводить всегда разные цифр телефона, а не последние 4 цифры, хотя я сомневаюсь вообще что они их убрали, расположение цифр генерируется за счёт страны или ещё каких то критерий, поэтому я сделал распознавание, для новичка это будет не просто, поэтому решил выложить свою логику распознавания этих самые едких цифр тут, программа будет вычислять начальные значения расположения цифр и конечные, и в зависимости от этого уже формировать цифры которые она должна отправить, весь код программы сразу:

Код
vari,i2:integer;tcopy,Phone,PhoneStart,PhoneEnd,response:string;startp,endp:boolean;beginstartp:=false;endp:=false;response:=memo1.text;Phone:='1234567';if pos('<div class="label ta_r">', response)<>0 then beginstartp:=true;tcopy:=copy(response,pos('<div class="label ta_r">', response)+length('<div class="label ta_r">'), length(response));PhoneStart:=copy(tcopy,0,pos('</div>', tcopy)-1);end;if pos('<span class="phone_postfix"> ', response)<>0 then beginendp:=true;tcopy:=copy(response,pos('<span class="phone_postfix"> ', response)+length('<span class="phone_postfix"> '), length(response));PhoneEnd:=copy(tcopy,0,pos('</span>', tcopy)-1);end;if phonestart[1]='+' then delete(phonestart,1,1);if pos('+',phone)<>0 then delete(phone,pos('+', phone),1);if startp=true then begini:=length(phonestart);  delete(phone,1,i);    end;if endp=true then begini2:=length(phone);i:=length(phoneEnd);i2:=i2-i; delete(phone,i2+1,i);end;


Теперь разберём как есть, вначале, мы объявляем переменные,

Код
vari,i2:integer;tcopy,Phone,PhoneStart,PhoneEnd,response:string;startp,endp:boolean;


затем даём программе знать что номер не имеет начала и конца(это делать нужно обязательно)

Код
startp:=false;endp:=false;


, после получаем значения если они существуют, а именно начальные цифры которые нам выдал вк и конечные, переменные startp и endp , как вы уже наверное догадались отвечают за ввод промежуточных цифр (парсинг костылями)

Код
if pos('<div class="label ta_r">', response)<>0 then beginstartp:=true;tcopy:=copy(response,pos('<div class="label ta_r">', response)+length('<div class="label ta_r">'), length(response));PhoneStart:=copy(tcopy,0,pos('</div>', tcopy)-1);end;if pos('<span class="phone_postfix"> ', response)<>0 then beginendp:=true;tcopy:=copy(response,pos('<span class="phone_postfix"> ', response)+length('<span class="phone_postfix"> '), length(response));PhoneEnd:=copy(tcopy,0,pos('</span>', tcopy)-1);end;


Данный код я сжал, но новичок написал бы всё через integer:=tpos, что тоже можно делать, но код получается в два раза больше..
Ну вот вроде бы и всё, получили начальные и конечные значения, осталось сделать удаление наших цифр который нам выдал вк, реализуем:

Код
if phonestart[1]='+' then delete(phonestart,1,1);if pos('+',phone)<>0 then delete(phone,pos('+', phone),1);


В начале мы удаляем "+" в номере нашего телефона если он присутствует, и также если он есть в вк номере который нам выдала система.

Затем удаляем начальные цифры из нашего телефона..


Код
if startp=true then begini:=length(phonestart); delete(phone,1,i);   end;

Ну а теперь удалим конечные цифры если опять же они есть


Цитата
if endp=true then begini2:=length(phone); i:=length(phoneEnd); i2:=i2-i; delete(phone,i2+1,i);end;
  • Страница 1 из 1
  • 1
Поиск: