Как найти параметры post запроса

<script>
<?php
if($_POST) { // Check to make sure params have been sent via POST
  foreach($_POST as $field => $value) { // Go through each POST param and output as JavaScript variable
    $val = json_encode($value); // Escape value
    $vars .= "var $field = $val;n";
  }
  echo "<script>n$vars</script>n";
}
?>
</script>

Or use it to put them in an dictionary that a function could retrieve:

<script>
<?php
if($_POST) {
  $vars = array();
  foreach($_POST as $field => $value) {
    array_push($vars,"$field:".json_encode($value)); // Push to $vars array so we can just implode() it, escape value
  }
  echo "<script>var post = {".implode(", ",$vars)."}</script>n"; // Implode array, javascript will interpret as dictionary
}
?>
</script>

Then in JavaScript:

var myText = post['text'];

// Or use a function instead if you want to do stuff to it first
function Post(variable) {
  // do stuff to variable before returning...
  var thisVar = post[variable];
  return thisVar;
}

This is just an example and shouldn’t be used for any sensitive data like a password, etc. The POST method exists for a reason; to send data securely to the backend, so that would defeat the purpose.

But if you just need a bunch of non-sensitive form data to go to your next page without /page?blah=value&bleh=value&blahbleh=value in your url, this would make for a cleaner url and your JavaScript can immediately interact with your POST data.

Данная относительно небольшая по объему текста инструкция расскажет вам о том, как можно выявить параметры GET / POST запросов к скрипту с помощью инструмента для разработчика, встроенного в любой браузер, построенный на базе движка webkit. Для примера я пожалуй возьму самого популярного из этого семейства —  Google Chrome. Отлавливать буду форму авторизации CMS WordPress.

1. Кликаем по значку меню и раскрываем «Инструменты → Инструменты разработчика», либо просто нажимаем клавишу «F12» или сочетание клавиш «Ctrl+Shift+I».

Инструменты разработчика в Google Chrome


2. Теперь, т.е. после того, как откроется небольшая «консоль», переходим на вкладку «Network». В адресной строке Хрома теперь набираем путь до веб-страницы, GET / POST данные запроса которой необходимо отловить. Лучше всего при этом узнать расположение самого скрипта на PHP.

Network - перехватываем параметры запросов в Google Chrome

3. На снимке окна приложения выше желтым подчеркиванием я выделил интересные для нас с вами моменты. В данном случае это обращения к скрипту под названием «wp-login.php».

Однако пока последний запечатлен немного не с тем состоянием, что нужно мне. Потому я ввожу заранее известные мне логин-пароль в форму авторизации и жму на кнопочку «Войти». Вот теперь уже можно приступать к анализу информации появившейся на вкладке Network:

Network - перехватываем параметры запросов в Google Chrome - 2

4. Кликаем по «wp-login.php», что засветился в отладчике. Переходим на вкладку «Headers», — заголовки ответа веб-сервера. Сворачиваем все за исключением «From Data». А вот собственно и они, параметры запроса — в текущем примере отправленные методом POST.

log:admin
pwd:1
wp-submit:Войти
redirect_to:http://127.0.0.1/theme-unit-test/wp-admin/
testcookie:1

Network - перехватываем параметры запросов в Google Chrome - 3

P.S. Практическое использование полученной информации для написания скрипта авторизации на сайте под управлением WordPress вы можете прочитать в моей предыдущей статье.

Опубликовано 28-03-2013 в 13:34

There a search service (PHP) which sends search query via POST. I would like to use that search engine in my app. The PHP service does not have a public API.

Is there a way to enter search query and to fetch a POST request to see the name of parameters? I would use then later to send a POST requests from my app and to catch POST responses.

This is an official search engine with governmental officials who do not reply to my requests to tell me the name of parameters. It’s nothing illegal, app is free of charge, it’s just that I can no longer wait for them as they will reply to me.

PS. I have access to Ubuntu shell and its admin tools.

EDIT

This is how the search form looks like in the source of the web page (seen via browser)

<form action="search.php" method="POST">
   <input type="text" name="search" size=20><br>
   SZ<input type="checkbox" checked name="sz">
   NZ<input type="checkbox" checked name="nz">
   <input type="submit" name="search_term" value="search" >
</form>

EDIT 2

Do not edit post as a guy suggested me the proper way to do this via linux command curl.

asked Apr 29, 2012 at 14:58

sandalone's user avatar

sandalonesandalone

41k63 gold badges221 silver badges336 bronze badges

6

Have you tried viewing the source on the search form to get the POST parameters? i.e. the name of the input box

Edit
take for example the php form on tizag site

<html><body>
<h4>Tizag Art Supply Order Form</h4>
<form action="process.php" method="post"> 
<select name="item"> 
<option>Paint</option>
<option>Brushes</option>
<option>Erasers</option>
</select>
Quantity: <input name="quantity" type="text" /> 
<input type="submit" />
</form>
</body></html>

the parameters are the input names i.e. quality and item

Java code (was using this for appengine)

HttpURLConnection connection = null;
String line = null;
BufferedReader rd = null;
String urlParameters = "search=search&submit=Submit";
serverAddress = new URL("http://www.search.com/search.php");
// set up out communications stuff
connection = null;
connection = (HttpURLConnection) serverAddress.openConnection();
// connection.setRequestMethod("GET");
connection.setRequestMethod("POST");
connection.setRequestProperty("Referer", "");
connection.setRequestProperty("User-Agent", ""); 
connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
connection.connect();
if (connection.getResponseCode() == 404) {
    throw new ErrorException();
}
ArrayList<String> ud = new ArrayList<String>();
rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = rd.readLine()) != null) {
    ud.add(line); // add response to arraylist
}

answered Apr 29, 2012 at 15:10

anselm's user avatar

anselmanselm

12.7k2 gold badges18 silver badges18 bronze badges

10

Whilst this is certainly something you could do with curl in PHP, you should consider the possible consequences of scraping a government site to collect and reuse it’s data.

Of course, I don’t know how you will use the data, the importance of the data, the frequency of the requests or if you’ll be using proxies. So might be nothing to worry about.

You want to know that parameters returned by a third party search engine. So you’d use curl to POST to the SE in question. Then parse the returned page and extract the information you’re after.

Edit: Ok, so you’re a Java guy. If you’d be more comfortable using the shell, read a few of the examples of PHP’s «exec» command. There’s also the similar «system» and «passthru» you might want to look at.

answered Apr 29, 2012 at 15:05

HappyTimeGopher's user avatar

2

30 июля, 2021 11:45 дп
780 views
| Комментариев нет

Development, Java

Часто Express используется для разработки приложений, которым нужно будет получать информацию от пользователей. Двумя наиболее популярными методами сбора данных являются параметры URL и POST.

В этом мануале вы узнаете, как использовать Express для извлечения параметров URL и POST из запросов.

Требования

  • Локальная установка Node.js. Следуйте инструкциям для вашего дистрибутива: mac OS, Ubuntu, Debian, CentOS.
  • Для отправки POST-запросов нужен инструмент Postman.

Это руководство было проверено на версиях Node v15.4.0, npm v7.10.0 и express v4.17.1.

1: Создание тестового проекта

Сначала откройте окно терминала и создайте новый каталог проекта:

mkdir express-params-example

Затем перейдите в этот каталог:

cd express-params-example

На данном этапе вы можете инициализировать ваш новый проект npm:

npm init -y

Далее нужно установить пакет express:

npm install express@4.17.1

На данный момент у нас есть простой тестовый проект, готовый к использованию Express.

Создайте файл server.js и откройте его в редакторе кода:

const express = require('express');

const app = express();
const port = process.env.PORT || 8080;

// routes will go here

app.listen(port);
console.log('Server started at http://localhost:' + port);

Вернитесь в окно терминала и запустите приложение:

node server.js

Примечание: Вам придется перезапускать сервер node каждый раз, когда вы редактируете файл server.js. Если эта задача становится утомительной, обратитесь к мануалу Автоматический перезапуск приложений Node.js с помощью nodemon.

Теперь давайте создадим два маршрута для проверки извлечения параметров.

2: Извлечение параметров URL

Получить значения параметров URL можно с помощью req.query.

Рассмотрим следующий пример:

http://example.com/api/users?id=4&token=sdfa3&geo=us

Этот URL-адрес включает параметры id, token и geo (геолокация):

id: 4
token: sdfa3
geo: us

Повторно откройте файл server.js с помощью редактора кода и добавьте следующие строки для req.query.id, req.query.token и req.query.geo:

// ...

// routes will go here
// ...

app.get('/api/users', function(req, res) {
  const user_id = req.query.id;
  const token = req.query.token;
  const geo = req.query.geo;

  res.send({
    'user_id': user_id,
    'token': token,
    'geo': geo
  });
});

app.listen(port);
console.log('Server started at http://localhost:' + port);

Запустите сервер и используйте URL-адрес http://localhost:8080/api/users?id=4&token=sdfa3&geo=us в веб-браузере или в Postman.

Сервер вернет вам значения user_id, token и geo.

3: Извлечение значений из маршрутов

req.params можно использовать для получения значений из маршрутов.

Рассмотрим следующий URL:

http://localhost:8080/api/1

Этот URL-адрес включает маршруты для api и :version (1).

Вернитесь в файл server.js с помощью редактора кода и добавьте следующие строки для req.params.version:

// ...

// routes will go here
// ...

app.get('/api/:version', function(req, res) {
  res.send(req.params.version);
});

app.listen(port);
console.log('Server started at http://localhost:' + port);

Запустите сервер и используйте URL-адрес http://localhost:8080/api/1 в веб-браузере или в Postman.

Сервер вернет вам значение version.

4: Функция .param

Давайте теперь попробуем использовать функцию Express .param для получения определенного параметра. Эта функция считается промежуточным программным обеспечением и запускается до вызова маршрута.

Ее можно использовать для проверки данных (например, уточнить, существует ли пользователь) или для сбора важной информации о пользователе или элементе.

Взгляните на следующий URL:

http://localhost:8080/api/users/8host

Этот URL включает маршруты для users и :name (8host).

Вернитесь в server.js и добавьте в него следующие строки, чтобы изменить name:

// ...

app.param('name', function(req, res, next, name) {
  const modified = name.toUpperCase();

  req.name = modified;
  next();
});

// routes will go here
// ...

app.get('/api/users/:name', function(req, res) {
  res.send('Hello ' + req.name + '!');
});

app.listen(port);
console.log('Server started at http://localhost:' + port);

При запущенном сервере используйте URL-адрес http://localhost:8080/api/users/8host в веб-браузере или в Postman.

Сервер ответит:

Hello 8HOST!

Вы можете использовать промежуточный обработчик param для проверки передаваемой информации.

Затем сохраните информацию в запросе (req), чтобы другие маршруты имели к ней доступ.

5: Извлечение параметров POST

express.json() и express.urlencoded() – встроенные промежуточные функции для поддержки элементов с кодировкой JSON и URL.

Откройте server.js с помощью редактора кода и добавьте следующие строки:

const express = require('express');

const app = express();
const port = process.env.PORT || 8080;

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// ...

Затем добавьте app.post с req.body.id, req.body.token и req.body.geo:

// ...

// routes will go here
// ...

app.post('/api/users', function(req, res) {
  const user_id = req.body.id;
  const token = req.body.token;
  const geo = req.body.geo;

  res.send({
    'user_id': user_id,
    'token': token,
    'geo': geo
  });
});

app.listen(port);
console.log('Server started at http://localhost:' + port);

Если ваш сервер запущен, сгенерируйте POST-запрос с помощью Postman.

Примечание: Если вам нужна помощь в навигации по интерфейсу Postman, обратитесь к официальной документации.

Установите тип запроса POST и задайте URL-адрес http://localhost:8080/api/users. Затем установите для Body значение x-www-form-urlencoded.

Укажите следующие значения:

ключ значение
id 4
token sdfa3
geo us

После отправки ответа сервер вернет значения user_id, token и geo.

Заключение

В этой статье вы научились использовать Express для извлечения параметров из запросов URL и POST. Мы сделали это с помощью функций req.query, req.params и req.body.

Tags: Express, Express.js

Читаю информацию про http запросы.
В большинстве источников говорится, что запрос состоит из 4 пунктов и обязателен только первый (и третий, если есть тело)

  • Строка запроса
  • Заголовки
  • Пустая строка
  • Тело сообщения

Так вот, как я понял одно из отличий GET от POST в том, что в POST запросе все параметры можно передать «скрыто», а в GET запросе, если будет Query String, то пользователь в браузере ее увидит.

В общем я в Google Chrome открыл инструменты разработчика, network и полазил по сайтам, по просматривал тела GET и POST запросов.
Когда Chrome отображал информацию о POST запросах, там на уровне с вкладками General, Response Headers, Request Headers могли появляться еще вкладками, например Request Payload или Form Data или Query String Parametrs.

Собственно вопрос — в каких разделах запроса (и в каком виде) передается эта информация, из которых потом формируются вкладки Request Payload или Form Data или Query String Parametrs? Это json’ы, которые идут после пустой строки или это json’ы-словари, которые идут в Headers, но почему-то выделены в отдельные ветки?

5c8b15ac73148866059386.png

Понравилась статья? Поделить с друзьями:
  • Как найти поломку на материнской плате
  • Как найти информацию по фото на андроид
  • Как исправить зубы если они кривые
  • Как найти с помощью карты особняк
  • Ошибка в больничном листе как исправить фамилию