Дата: Вторник, 15.10.2013, 12:25 | Сообщение # 1
Ввод телефона в вк, или как обойти систему.
В ВК довольно таки давно, усовершенствовали Проверку безопасности
теперь нужно вводить всегда разные цифр телефона, а не последние 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;
|