Http request cmd windows


Форум программистов Vingrad

Модераторы: bartram, Akella

Поиск:

 отправить HTTP запрос из cmd, отправить HTTP запрос из cmd 

   

Опции темы

metaluga
Дата 22.1.2010, 16:18 (ссылка)
| (нет голосов)
 Загрузка …

Новичок

Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.1.2010

Репутация: нет
Всего: нет

задача простая.
нужно отправить HTTP запрос из командной строки windows.
как я понимаю нужно использовать telnet.

НО мне нужно чтобы вся команда шла в одну строчку!
*я в одной проге system(«команда») должен написать!

иначе бы я сделал так:
1)telnet example.com 80 <жмякнуть Ентер>
2)GET /index.html HTTP/1.0 <жмякнуть Ентер><жмякнуть Ентер>

так как все таки нужно в одну строчку?

может быть как-то так?
telnet example.com 80 -x «GET /index.html HTTP/1.0»
или так?
telnet example.com 80 -x «GET /index.html HTTP/1.0\r\n\r\n»

какой же мне символ вместо х писать?

PS справку смарел:
telnet ? — пишет чушь.

 
bartram
Дата 22.1.2010, 21:07 (ссылка)
| (нет голосов)
 Загрузка …

Эксперт

Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 12
Всего: 29

metaluga, если ты делаешь это программно, то ты можешь передавать  вместо Enter, символ перехода на новую строку.

———————

В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter

 
metaluga
Дата 23.1.2010, 00:29 (ссылка)
| (нет голосов)
 Загрузка …

Новичок

Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.1.2010

Репутация: нет
Всего: нет

не получается т.к. для cmd строка

Код

telnet example.com 80\r\nGET /index.html HTTP/1.0

тоже самое что 2 строки:

Код

telnet example.com 80
GET /index.html HTTP/1.0

а это не сработает т.к. GET неизвестная бяка.

хочется написать как то так:

Код

telnet example.com 80
telnet GET /index.html HTTP/1.0

что неверно т.к. 2-ая строка выполнится только после завершения 1-ой.

поэтому пришел к выводу что надо все в одну строчку.
но у тупого telneta нет передачи параметров которые нужно отсылать!

в силу сложившихся обстоятельств нельзя использовать winsock.
а работа с telnet напрямую из c++ как с cmd нет.
***писали бы все нормальные люди так:
***telnet(«open example.com 80»);
***telnet(«GET /index.html HTTP/1.0»);
***сока бы проблем тогда бы решилось ###!

кароч я полазил на всяких форумах и ничего не нашел.
все радостно открывают телнет руками и пишут там запрос руками.
а автоматизировать мона получается только с помощью программы-тыкальщика, которая откроет етот галимый телнет и как юзер напишет туда шо нужно иногда имитируя нажатия Ентера.
вон чувак с такой же проблемой.
никто ему ниче не сказал.
а остальных посылают на…..
ой куда их только не посылают с этим вопросом!
на Перл, Пхп курл, винсокеты, даже на ассемблер видел.
это даже хуже чем на куй.

 
mihanik
Дата 23.1.2010, 08:06 (ссылка)
| (нет голосов)
 Загрузка …

-=Белый Медведь=-

Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 61
Всего: 109

http://www.freeware.ru/program_prog_id_16434.html

http://bb.ct.kz/lofiversion/index.php/t167910.html

а VBS не подойдёт?
Там это достаточно просто делается…
Ты что своими запросами делаешь?
Получаешь текст страницы ?

http://forum.vingrad.ru/forum/topic-282134.html

———————

Программистами не рождаются, — это родовая травма…

 
metaluga
Дата 23.1.2010, 12:31 (ссылка)
| (нет голосов)
 Загрузка …

Новичок

Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.1.2010

Репутация: нет
Всего: нет

я студент и мы сдаем ацко сложные задачи по алгоритмике.
например вот сейчас другу решаю задачу:

Код

Прибор спроектирован таким образом, что он будет собираться из отдельных узлов, причем каждый узел уникален. Сами узлы в свою очередь могут требовать предварительной сборки. Для сборки каждого узла необходимо, чтобы все узлы, комплектующие его, были уже собраны. Узлы, не требующие сборки, обязательно тестируются на работоспособность. Собираемые узлы тестировать не требуется. На сборку одного узла или на его тестирование тратится один день. Готовый узел должен быть помещен на склад и может быть взят со склада только тогда, когда он необходим для сборки очередного узла или самого прибора. Хранение узла на складе в течении одного дня требует оплаты в размере одной условной денежной единицы. Необходимо организовать сборку таким образом, чтобы плата за аренду склада была минимальной.

если не решу — он не сдаст зачот.
не вылетит конечно но много неприятного буит это да.

мое консольное приложение выполныется на стороне сервера.
в системе хранятся условия in.txt или иногда in.csv

in.txt -> Наша консольная прога -> out.txt

далее out.txt проверяется на правильность.
я то задачу решил
НО там проходят только 14 из 17 тестов на плюсик.

нужно бы стырить условие in.txt чтобы пасмареть реально ли там ошибка!
А то препод у нас ###!
хоть 1 тест неверно — все — иди дальше решай.

раньше я тыбзил условия джавой т.к. там очень легко написать подключение к левому серверу и отправить ему полностью методом Пост весь текст in.txt
а теперь его файерволом прикрыли.

поэтому нужно как-то из командной строки отправлять т.к. доступ у наших прог для cmd полный.
ну представьте если ваша прога хочет вылезти в инет — файервол сразу пищит и говорит «разрешить ли проге xz.exe выход в инет»
а админы у нас не нубы. уверен что если джаву прикрыли — то и доступ приложениям в инет закрыт.
но вот написал я в проге такую фразу:
system(«telnet example.com 80»);
файервол уже не запищал!
смарю — а он АВТОМАТИЧЕСКИ добавил разрешение для доступа в инет системному приложению. т.к оно уже зарегестрировано!
а связь между моей прогой он сечет только такую:
«разрешить ли приложению xz.exe запускать cmd.exe?»
а я отлично знаю что это разрешение у наших прог есть!

схема:
xz.exe (разрешение о запуске cmd есть) -> cmd.exe ->  telnet.exe -> (системные приложения имеют право доступ в инет) — > условие убежало на левый сервак.

поэтому нужно командовать cmd для запуска телнет в одну строчку.
а также из этого вытекает что winsock не будет работать.

 
mihanik
Дата 23.1.2010, 13:11 (ссылка)
| (нет голосов)
 Загрузка …

-=Белый Медведь=-

Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 61
Всего: 109

Ну…
Попробуй мой скрипт.
Может, тоже не будет ругаться…
  
Там исполняющая система cscript.exe или wscript.exe…

———————

Программистами не рождаются, — это родовая травма…

 
metaluga
Дата 23.1.2010, 13:30 (ссылка)
| (нет голосов)
 Загрузка …

Новичок

Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.1.2010

Репутация: нет
Всего: нет

извини за тупость на я не понял какой именно скрипт и как его использовать   

 
Akella
Дата 23.1.2010, 13:52 (ссылка)
| (нет голосов)
 Загрузка …

Творец

Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 73
Всего: 329

Цитата(metaluga @  23.1.2010,  13:30 )
извини за тупость на я не понял какой именно скрипт и как его использовать  smile  

А щёлкнуть лень было, да?

Цитата(mihanik @  23.1.2010,  08:06 )
Получаешь текст страницы ?

http://forum.vingrad.ru/forum/topic-282134.html

 
metaluga
Дата 23.1.2010, 14:23 (ссылка)
| (нет голосов)
 Загрузка …

Новичок

Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.1.2010

Репутация: нет
Всего: нет

я все пощелкал и все почитал.

Код

http://forum.vingrad.ru/forum/topic-282134.html

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

 
Akella
Дата 23.1.2010, 15:39 (ссылка)
| (нет голосов)
 Загрузка …

Творец

Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 73
Всего: 329

Там же тебе готовое всё

 
GR0Mi
Дата 11.5.2010, 18:41 (ссылка)
| (нет голосов)
 Загрузка …

Шустрый

Профиль
Группа: Участник
Сообщений: 85
Регистрация: 9.4.2010

Репутация: нет
Всего: нет

таже интересует как можно из смд, послать пост\гет запрос вида
http://сайт.biz/index.php?name=%COMPUTERNAME%

 
hipAppops
Дата 10.9.2022, 08:40 (ссылка)
| (нет голосов)
 Загрузка …

Новичок

Профиль
Группа: Участник
Сообщений: 12
Регистрация: 9.9.2022

Репутация: нет
Всего: нет

Модератор: Сообщение скрыто.

 
Правила форума «Windows»

Запрещается!

1. Обсуждать взлом и делиться кряками

2. Способствовать созданию и распространению вирусов

  • Для бессмертных бородатых вопросов типа Win vs Nix есть специальный форум Религиозные Войны
  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль «Помогите!» таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • ВСЕГДА УКАЗЫВАЙТЕ ВЕРСИЮ ОС

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, December, bartram, Akella.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Windows | Следующая тема »

Example: cmd http request

Usage:

CmdHttpRequest -u http://www.google.com
 

CmdHttpRequest -u http://www.google.com -d c:\temp
 

CmdHttpRequest -u http://www.google.com -t Success

All command switches:

u, url           Required. URL to check
d, dir           Output directory
t, text          Text to check for
o, timeout       Timeout (in milliseconds)
help

Tags:

Shell Example

Related

WinHTTP

Windows cmd line tool to send HTTP requests

Usage Examples

1. Simple GET request

C:\winhttp http://www.google.com

2. Save response --output (-o)

C:\winhttp http://www.google.com -o response.html

3. Request headers only --method (-m) HEAD
Works if server supports HEAD requests.

C:\winhttp http://www.google.com -m HEAD

4. Verbose --verbose (-v) flag.

C:\winhttp http://www.google.com -v

Command line screenshot

The `curl` command in CMD is a tool used to transfer data from or to a server using various protocols, commonly HTTP or HTTPS.

Here’s a basic example of a `curl` command to fetch the content of a webpage:

curl https://www.example.com

What is Curl?

Curl is a powerful command-line tool used to transfer data from or to a server utilizing various protocols, such as HTTP, HTTPS, FTP, and more. It allows users to interact with web servers and APIs, making it invaluable for developers, system administrators, and anyone needing to make web requests or retrieve data. Since its inception, Curl has evolved dramatically, becoming a standard for users needing a versatile, reliable data transfer tool.

Mastering Cmd Current Directory with Ease

Mastering Cmd Current Directory with Ease

Importance of CMD Curl in Windows

In a Windows environment, CMD Curl is essential for various tasks, including troubleshooting network issues, automating API requests, and downloading files directly from the command line. By utilizing Curl, Windows users can leverage functionalities typically reserved for more advanced environments. Moreover, learning to use CMD Curl significantly enhances one’s ability to engage with both local and remote servers efficiently.

Mastering Cmd Cls: Clear Your Screen Instantly in Cmd

Mastering Cmd Cls: Clear Your Screen Instantly in Cmd

Getting Started with CMD Curl

Setting Up Curl on Windows CMD

To begin using Curl in Windows, it’s crucial first to check if it’s installed. You can do this by typing:

curl --version

If Curl is installed, this command will output the version number and supported protocols. If you don’t have Curl installed, you’ll need to download it from the official Curl website and follow the installation instructions to integrate it into your command line environment.

Basic Syntax of Curl

Understanding the basic syntax of Curl is critical for using it effectively. The general structure is:

curl [options] [URL]
  • options: These are flags that modify the behavior of Curl.
  • URL: This specifies the web address of the resource you want to access.

Mastering this syntax is the first step toward becoming proficient with CMD Curl.

Master Cmd Clean Disk for a Clutter-Free System

Master Cmd Clean Disk for a Clutter-Free System

Common CMD Curl Commands

Fetching a Web Page

One of the simplest yet most useful commands in Curl is fetching a webpage. To retrieve the content of a webpage, use:

curl http://example.com

This command sends a GET request to the specified URL, and the HTML content of the page will be displayed directly in the command line interface.

Saving Output to a File

In many cases, you might want to save the output of a Curl command to a file instead of displaying it on the screen. To do this, use the `-o` option:

curl -o filename.html http://example.com

This command will save the retrieved content as `filename.html` in your current directory, allowing you to view the page later offline.

Displaying Headers Only

Understanding HTTP headers can provide insight into web server responses. To fetch only the headers for a specific page, you can use the `-I` option as follows:

curl -I http://example.com

This command sends a HEAD request, which retrieves the headers without downloading the entire content of the page, which is especially useful for debugging or when checking server configurations.

Cmd Clear Cache Made Easy: A Quick How-To Guide

Cmd Clear Cache Made Easy: A Quick How-To Guide

Advanced CMD Curl Features

Sending Data with POST Requests

Curl allows you to send data to a server using various HTTP methods. One common method is POST, which is typically used for form submissions. You can structure the command like this:

curl -X POST -d "param1=value1&param2=value2" http://example.com/submit

In this example, `param1` and `param2` are key-value pairs being sent to the server. Using POST requests is essential for interacting with APIs, where you often need to send data.

Adding Authentication

Many web services require authentication before granting access to resources. Curl simplifies this using the `-u` option for Basic Authentication:

curl -u username:password http://example.com

Replace `username` and `password` with your actual credentials. While this method is straightforward, it’s crucial to be cautious with how you handle sensitive information to ensure your credentials remain secure.

Handling Cookies

Cookies are commonly used for session management in web applications. To send cookies with your request, you can use the `-b` option:

curl -b cookies.txt http://example.com

This command reads cookies from a file named `cookies.txt` and sends them along with the request. Managing cookies effectively can be vital for interacting with personalized web experiences or for maintaining session states across requests.

Mastering Cmd Color Codes for Vibrant Output

Mastering Cmd Color Codes for Vibrant Output

Troubleshooting with CMD Curl

Common Error Messages

When using Curl, you may encounter various error messages. Understanding these can help troubleshoot issues effectively:

  • Could not resolve host: This indicates an issue with the DNS, where Curl cannot translate the hostname to an IP address.
  • Connection refused: This suggests that the server is not accepting requests on the specified port.
  • HTTP/1.1 404 Not Found: This indicates that the requested resource could not be found on the server.

Using Verbose Mode for Debugging

To gain deeper insights into what Curl is doing, you can use the `-v` option for verbose output:

curl -v http://example.com

This detailed output includes information about the request and response headers, making it easier to identify where issues may arise.

Cmd Auto: Quick Tips for Effective Command Line Usage

Cmd Auto: Quick Tips for Effective Command Line Usage

Integrating CMD Curl into Scripts

Curl in Batch Files

Curl can be incorporated into batch files, automating routine tasks. For instance, a simple batch script to download a list of files could look like this:

@echo off
curl -O http://example.com/file1.txt
curl -O http://example.com/file2.txt

This example will download `file1.txt` and `file2.txt` into the current directory. Using scripts can save time and ensure consistency in tasks.

Automating API Requests

Curl is exceptionally useful for automating requests to APIs. For example, to send a GET request to an API endpoint, you might write:

curl -H "API-Key: your_api_key" http://api.example.com/data

In this command, you’re including an API key in the headers to authenticate your request. Automating API interactions through Curl scripts can streamline workflows and minimize manual input.

Mastering Cmd Flushdns for Quick Network Troubleshooting

Mastering Cmd Flushdns for Quick Network Troubleshooting

Best Practices for Using CMD Curl

Security Considerations

When using CMD Curl, always prioritize security. This is especially true when dealing with sensitive data. Ensure that you use HTTPS URLs to maintain secure connections, as this encrypts any data transmitted between your machine and the server.

Conclusion

CMD Curl is an invaluable tool that can simplify countless tasks, from fetching web pages to sending data to APIs. By mastering its commands and options, users can handle various networking needs efficiently. As you explore the capabilities of CMD Curl, you’ll discover new ways to streamline processes and enhance your command-line skills.

Mastering Cmd Runas: Elevate Your Command Line Skills

Mastering Cmd Runas: Elevate Your Command Line Skills

Additional Resources

To further your understanding of CMD Curl, consider checking out the following resources:

  • The official Curl documentation provides comprehensive details on all commands and options.
  • Online forums and communities can provide assistance and shared experiences from other Curl users.
  • Look for books or online courses focused on command-line tools for deeper learning and best practices.

Cmd For Mastery: Quick Commands for Everyone

Cmd For Mastery: Quick Commands for Everyone

FAQs about CMD Curl

What is the difference between Curl and Wget?

Both Curl and Wget serve similar purposes in downloading content, but Curl is more versatile, handling a broader range of protocols and options, especially when it comes to sending data and interacting with APIs. Moreover, Curl has a more complex syntax that allows for detailed interactions, while Wget is more straightforward for basic downloads.

Can Curl be used for Windows PowerShell?

Yes, while Curl primarily operates in CMD, many commands for Curl can be adapted for use in Windows PowerShell as well. However, some syntax may differ, and it is crucial to consult relevant documentation to understand these differences.

Using CMD Curl effectively can greatly improve your efficiency and capability in managing web requests and operations within Windows environments.

CURL — утилита командной строки для Linux или Windows, поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах сайтов и других операций с URL адресами. Поддержка CURL добавлена в множество различных языков программирования и платформ.

Для начала скачаем саму утилиту, для этого переходим на официальный сайт утилиты, в раздел Download. После скачивания архива для своей платформы (у меня это Windows 64 bit), распаковываем архив. Чтобы иметь возможность работать с HTTPS и FTPS, устанавливаем сертификат безопасности url-ca-bundle.crt, который находится в папке curl/bin.

Запускаем командную строку, переходим в директорию curl/bin и пытаемся скачать главную страницу Google:

> cd C:/curl/bin
> curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

Опция -X позволяет задать тип HTTP-запроса вместо используемого по умолчанию GET. Дополнительные запросы могут быть POST, PUT и DELETE или связанные с WebDAV — PROPFIND, COPY, MOVE и т.п.

Следовать за редиректами

Сервер Google сообщил нам, что страница google.com перемещена (301 Moved Permanently), и теперь надо запрашивать страницу www.google.com. С помощью опции -L укажем CURL следовать редиректам:

> curl -L google.com
<!doctype html>
<html itemscope="" itemtype="http://schema.org/WebPage" lang="ru">
<head>
<meta content="Поиск информации в интернете: веб страницы, картинки, видео и многое другое." name="description">
<meta content="noodp" name="robots">
<meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image">
<meta content="origin" name="referrer">
<title>Google</title>
..........

Сохранить вывод в файл

Чтобы сохранить вывод в файл, надо использовать опции -o или -O:

  • -o (o нижнего регистра) — результат будет сохранён в файле, заданном в командной строке;
  • -O (O верхнего регистра) — имя файла будет взято из URL и будет использовано для сохранения полученных данных.

Сохраняем страницу Google в файл google.html:

> curl -L -o google.html google.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   219  100   219    0     0   2329      0 --:--:-- --:--:-- --:--:--  2329
100 14206    0 14206    0     0  69980      0 --:--:-- --:--:-- --:--:-- 69980

Сохраняем документ gettext.html в файл gettext.html:

> curl -O http://www.gnu.org/software/gettext/manual/gettext.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1375k  100 1375k    0     0   800k      0  0:00:01  0:00:01 --:--:--  800k

Загрузить файл, только если он изменён

Опция -z позволяет получить файлы, только если они были изменены после определённого времени. Это будет работать и для FTP и для HTTP. Например, файл archive.zip будет получен, если он изменялся после 20 августа 2018 года:

> curl -z 20-Aug-18 http://www.example.com/archive.zip

Команда ниже загрузит файл archive.zip, если он изменялся до 20 августа 2018 года:

> curl -z -20-Aug-18 http://www.example.com/archive.zip

Прохождение аутентификации HTTP

Опция -u позволяет указать данные пользователя (имя и пароль) для прохождения базовой аутентификаци (Basic HTTP Authentication):

> curl -u evgeniy:qwerty -O http://www.example.com/archive.zip

Получение и отправка cookie

Cookie используются сайтами для хранения некой информации на стороне пользователя. Сервер сохраняет cookie на стороне клиента (т.е. в браузере), отправляя заголовки:

Set-Cookie: PHPSESSID=svn7eb593i8d2gv471rs94og58; path=/
Set-Cookie: visitor=fa867bd917ad0d715830a6a88c816033; expires=Mon, 16-Sep-2019 08:20:53 GMT; Max-Age=31536000; path=/
Set-Cookie: lastvisit=1537086053; path=/

А браузер, в свою очередь, отправляет полученные cookie обратно на сервер при каждом запросе. Разумеется, тоже в заголовках:

Cookie: PHPSESSID=svn7eb593i8d2gv471rs94og58; visitor=fa867bd917ad0d715830a6a88c816033; lastvisit=1537086053

Передать cookie на сервер, как будто они были ранее получены от сервера:

> curl -b lastvisit=1537086053 http://www.example.com/

Чтобы сохранить полученные сookie в файл:

> curl -c cookie.txt http://www.example.com/

Затем можно отправить сохраненные в файле cookie обратно:

> curl -b cookie.txt http://www.example.com/catalog/

Файл cookie.txt имеет вид:

# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

www.example.com    FALSE    /    FALSE    0             lastvisit        1537085301
www.example.com    FALSE    /    FALSE    1568621304    visitor          60f7c17ba4b5d77975dfd020f06ac8ca
www.example.com    FALSE    /    FALSE    0             PHPSESSID        p23cr2d14rlgj5kls58kd7l6a6

Получение и отправка заголовков

По умолчанию, заголовки ответа сервера не показываются. Но это можно исправить:

> curl -i google.com
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Sun, 16 Sep 2018 08:28:18 GMT
Expires: Tue, 16 Oct 2018 08:28:18 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

Если содержимое страницы не нужно, а интересны только заголовки (будет отправлен HEAD запрос):

> curl -I http://www.example.com/
HTTP/1.1 200 OK
Date: Sun, 16 Sep 2018 08:20:52 GMT
Server: Apache/2.4.34 (Win64) mod_fcgid/2.3.9
X-Powered-By: PHP/7.1.10
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: PHPSESSID=svn7eb593i8d2gv471rs94og58; path=/
Set-Cookie: visitor=fa867bd917ad0d715830a6a88c816033; expires=Mon, 16-Sep-2019 08:20:53 GMT; Max-Age=31536000; path=/
Set-Cookie: lastvisit=1537086053; path=/
Content-Length: 132217
Content-Type: text/html; charset=utf-8

Посмотреть, какие заголовки отправляет CURL при запросе, можно с помощью опции -v, которая выводит более подробную информацию:

> curl -v google.com
  • Строка, начинающаяся с > означает заголовок, отправленный серверу
  • Строка, начинающаяся с < означает заголовок, полученный от сервера
  • Строка, начинающаяся с * означает дополнительные данные от CURL
* Rebuilt URL to: http://google.com/
*   Trying 173.194.32.206...
* TCP_NODELAY set
* Connected to google.com (173.194.32.206) port 80 (#0)
> GET / HTTP/1.1
> Host: google.com
> User-Agent: curl/7.61.1
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Location: http://www.google.com/
< Content-Type: text/html; charset=UTF-8
< Date: Mon, 17 Sep 2018 15:11:49 GMT
< Expires: Wed, 17 Oct 2018 15:11:49 GMT
< Cache-Control: public, max-age=2592000
< Server: gws
< Content-Length: 219
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
* Connection #0 to host google.com left intact

Если этой информации недостаточно, можно использовать опции --trace или --trace-ascii.

А вот так можно отправить свой заголовок:

> curl -H "User-Agent: Mozilla/5.0" http://www.example.com/

Отправка данных методом POST

Команда ниже отправляет POST запрос на сервер аналогично тому, как пользователь, заполнив HTML форму, нажал бы кнопку «Отправить». Данные будут отправлены в формате application/x-www-form-urlencoded.

> curl -d "key1=value1&key2=value2" http://www.example.com
> curl --data "key1=value1&key2=value2" http://www.example.com

Параметр --data аналогичен --data-ascii, для отправки двоичных данных необходимо использовать параметр --data-binary. Для URL-кодирования полей формы нужно использовать --data-urlencode.

> curl --data-urlencode "name=Василий" --data-urlencode "surname=Пупкин" http://www.example.com

Если значение опции --data начинается с @, то после него должно быть имя файла с данными (или дефис — тогда будут использованы данные из стандартного ввода). Пример получения данных из файла для отправки POST-запроса:

> curl --data @data.txt http://www.example.com

Содержимое файла data.txt:

key1=value1&key2=value2

Массив $_POST, который будет содержать данные этого запроса:

Array
(
    [key1] => value1
    [key2] => value2
)

Пример URL-кодирования данных из файла перед отправкой POST-запроса:

> curl --data-urlencode name@username.txt http://www.example.com

Содержимое файла username.txt:

Иванов Иван Иванович

Массив $_POST, который будет содержать данные этого запроса:

Array
(
    [name] = Иванов Иван Иванович
)

Загрузка файлов методом POST

Для HTTP запроса типа POST существует два варианта передачи полей из HTML форм, а именно, используя алгоритм application/x-www-form-urlencoded и multipart/form-data. Алгоритм первого типа создавался давным-давно, когда в языке HTML еще не предусматривали возможность передачи файлов через HTML формы.

Со временем возникла необходимость через формы отсылать еще и файлы. Тогда консорциум W3C взялся за доработку формата POST запроса, в результате чего появился документ RFC 1867. Форма, которая позволяет пользователю загрузить файл, используя алгоритм multipart/form-data, выглядит примерно так:

<form action="/upload.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="upload">
    <input type="submit" name="submit" value="OK">
</form>

Чтобы отправить на сервер данные такой формы:

> curl -F upload=@image.jpg -F submit=OK http://www.example.com/upload.php

Скрипт upload.php, который принимает данные формы:

<?php
print_r($_POST);
print_r($_FILES);
move_uploaded_file($_FILES['upload']['tmp_name'], 'image.jpg');

Ответ сервера:

Array
(
    [submit] => OK
)
Array
(
    [upload] => Array
        (
            [name] => image.jpg
            [type] => image/jpeg
            [tmp_name] => D:\work\temp\phpB02F.tmp
            [error] => 0
            [size] => 2897
        )
)

Работа по протоколу FTP

Скачать файл с FTP-сервера:

> curl -u username:password -O ftp://example.com/file.zip

Если заданный FTP путь является директорией, то по умолчанию будет выведен список файлов в ней:

> curl -u username:password -O ftp://example.com/public_html/

Выгрузить файл на FTP-сервер

> curl -u username:password -T file.zip ftp://example.com/

Получить вывод из стандартного ввода и сохранить содержимое на сервере под именем data.txt:

> curl -u username:password -T - ftp://example.com/data.txt

Дополнительно:

  • Утилита curl. Обмен данными с сервером
  • Пользуемся curl для отладки HTTP

Поиск:
CLI • CURL • Cookie • FTP • GET • HTTP • Linux • POST • URL • Web-разработка • Windows • Форма

Каталог оборудования

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Производители

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Функциональные группы

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Не устанавливается eset nod32 на windows 10
  • Почему не устанавливается драйвер realtek high definition audio windows 10
  • Как узнать mac адрес ноутбука windows 10
  • Как отключить подключение к сетевой папке windows
  • Парковка ядер windows 10 отключить