help-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How is http request via /dev/tcp different from that of curl?


From: Peng Yu
Subject: Re: How is http request via /dev/tcp different from that of curl?
Date: Sun, 19 May 2024 15:23:28 -0500

That is a simple example in my original post. For example, in a real
application, I may get some info from the server and then send a new
request based on the info I received. This will require full fledged
programming ability.

The tools that you don’t seem to have such functionality. Nor it is easy to
access external programs in those tools like bash.

On Sun, May 19, 2024 at 11:14 AM alex xmb sw ratchev <fxmbsw7@gmail.com>
wrote:

>
>
> On Sun, May 19, 2024, 13:46 Peng Yu <pengyu.ut@gmail.com> wrote:
>
>> I said I need to process the responses after the sentence you quoted.
>> This means that I can do whatever operations with those responses. Can
>> those tools have the ability allowing me to do so?
>>
>
> they make tcp conn , what u printf in is ur thing
> and when to read or printf more first
>
> i dont get ur http example much
>
> On Sat, May 18, 2024 at 3:29 AM alex xmb sw ratchev <fxmbsw7@gmail.com>
>> wrote:
>>
>>> both tools i mentioned can put multiple user http requests , depending
>>> on httpd 2's
>>>
>>> they connect , and send user data , and recieve
>>> say u can send 3 requests , then read ..
>>>
>>> ita not ' those tools dont support multi request ' - thats wrong
>>> knowledge
>>>
>>> On Fri, May 17, 2024, 20:03 Peng Yu <pengyu.ut@gmail.com> wrote:
>>>
>>>> Please use proper grammar. I am not following you.
>>>>
>>>> On Fri, May 17, 2024 at 10:06 AM alex xmb sw ratchev <fxmbsw7@gmail.com>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Fri, May 17, 2024, 13:44 Peng Yu <pengyu.ut@gmail.com> wrote:
>>>>>
>>>>>> I know. But I need to establish one tcp connection and submit
>>>>>> multiple requests using the same connection. I don’t want the connection 
>>>>>> be
>>>>>> closed while I process the response. None external tools can achieve 
>>>>>> this.
>>>>>>
>>>>>
>>>>> what , ur dreaming ..
>>>>> if u http request , and the httpd is valid , u can send all kinds of
>>>>> http supported multi-things*
>>>>> no matter what tool all work
>>>>> its up to u having to make the http request n headers
>>>>> if u do well , and the httpd is not too junk , it ll work , no matter
>>>>> which tool
>>>>>
>>>>> On Fri, May 17, 2024 at 5:40 AM alex xmb sw ratchev <fxmbsw7@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> other tools to make tcp scripts are socat
>>>>>>> http://www.dest-unreach.org/socat/ and tcpclient and tcpserver from
>>>>>>> ucspi-tcp https://cr.yp.to/ucspi-tcp.html
>>>>>>>
>>>>>>> On Fri, May 17, 2024, 01:25 Peng Yu <pengyu.ut@gmail.com> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> $ curl 'http://httpbin.org/get' -H 'User-Agent: Mozilla/5.0
>>>>>>>> (Macintosh; Intel Mac OS X 10.15; rv:125.0) Gecko/20100101
>>>>>>>> Firefox/125.0' -H 'Accept: application/json' -H 'Accept-Language:
>>>>>>>> en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate' -H 'Referer:
>>>>>>>> http://httpbin.org/' -H 'DNT: 1' -H 'Sec-GPC: 1' -H 'Connection:
>>>>>>>> keep-alive'
>>>>>>>> {
>>>>>>>>   "args": {},
>>>>>>>>   "headers": {
>>>>>>>>     "Accept": "application/json",
>>>>>>>>     "Accept-Encoding": "gzip, deflate",
>>>>>>>>     "Accept-Language": "en-US,en;q=0.5",
>>>>>>>>     "Dnt": "1",
>>>>>>>>     "Host": "httpbin.org",
>>>>>>>>     "Referer": "http://httpbin.org/";,
>>>>>>>>     "Sec-Gpc": "1",
>>>>>>>>     "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15;
>>>>>>>> rv:125.0) Gecko/20100101 Firefox/125.0",
>>>>>>>>     "X-Amzn-Trace-Id": "Root=1-66469337-0aab56e96f4fee271f6a09ce"
>>>>>>>>   },
>>>>>>>>   "origin": "xxx.xxx.xxx.xxx",
>>>>>>>>   "url": "http://httpbin.org/get";
>>>>>>>> }
>>>>>>>>
>>>>>>>> I want to replicate the same thing in bash below. But the result is
>>>>>>>> not the same. How is the bash http request via /dev/tcp different
>>>>>>>> from
>>>>>>>> that of curl?
>>>>>>>>
>>>>>>>> exec {fd}<>/dev/tcp/httbin.org/80
>>>>>>>>
>>>>>>>> echo -e "GET /get HTTP/1.1\r
>>>>>>>> Host: httpbin.org\r
>>>>>>>> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:125.0)
>>>>>>>> Gecko/20100101 Firefox/125.0\r
>>>>>>>> Accept: application/json\r
>>>>>>>> Accept-Language: en-US,en;q=0.5\r
>>>>>>>> Accept-Encoding: gzip, deflate\r
>>>>>>>> Referer: http://httpbin.org/\r
>>>>>>>> DNT: 1\r
>>>>>>>> Sec-GPC: 1\r
>>>>>>>> Connection: keep-alive\r
>>>>>>>> \r" >&"$fd"
>>>>>>>>
>>>>>>>> function httpprotocol/recv {
>>>>>>>>   while IFS= read -u "$fd" -r; do
>>>>>>>>     if [[ $REPLY =~ ^([^:]+):\ *(.*)$'\r'$ ]]; then
>>>>>>>>       headers[${BASH_REMATCH[1],,}]=${BASH_REMATCH[2]}
>>>>>>>>     elif [[ $REPLY = $'\r' ]]; then
>>>>>>>>       LC_ALL=C read -u "$fd" -r -d '' -N
>>>>>>>> "${headers[content-length]}" body
>>>>>>>>       break
>>>>>>>>     fi
>>>>>>>>  printf -v REPLY '%q' "$REPLY"
>>>>>>>>  echo "$REPLY"
>>>>>>>>   done
>>>>>>>> }
>>>>>>>>
>>>>>>>> declare -A headers
>>>>>>>> $ httpprotocol/recv
>>>>>>>> $'HTTP/1.1 200 OK\r'
>>>>>>>> $'accept-ch: Sec-CH-UA, Sec-CH-UA-Platform,
>>>>>>>> Sec-CH-UA-Platform-Version, Sec-CH-UA-Mobile\r'
>>>>>>>> $'cache-control: max-age=0, private, must-revalidate\r'
>>>>>>>> $'connection: close\r'
>>>>>>>> $'content-length: 475\r'
>>>>>>>> $'content-type: text/html; charset=utf-8\r'
>>>>>>>> $'date: Thu, 16 May 2024 23:18:56 GMT\r'
>>>>>>>> $'server: nginx\r'
>>>>>>>> $'set-cookie: sid=ab0e69e8-13da-11ef-911e-ea384f7d4599; path=/;
>>>>>>>> domain=.httpbin.org; expires=Wed, 04 Jun 2092 02:33:03 GMT;
>>>>>>>> max-age=2147483647; HttpOnly\r'
>>>>>>>>
>>>>>>>> $ declare -p headers
>>>>>>>> declare -A headers=([server]="nginx" [connection]="close"
>>>>>>>> [content-type]="text/html; charset=utf-8"
>>>>>>>> [cache-control]="max-age=0,
>>>>>>>> private, must-revalidate"
>>>>>>>> [set-cookie]="sid=ab0e69e8-13da-11ef-911e-ea384f7d4599; path=/;
>>>>>>>> domain=.httpbin.org; expires=Wed, 04 Jun 2092 02:33:03 GMT;
>>>>>>>> max-age=2147483647; HttpOnly" [content-length]="475"
>>>>>>>> [accept-ch]="Sec-CH-UA, Sec-CH-UA-Platform,
>>>>>>>> Sec-CH-UA-Platform-Version, Sec-CH-UA-Mobile" [date]="Thu, 16 May
>>>>>>>> 2024
>>>>>>>> 23:18:56 GMT" )
>>>>>>>> $ echo "$body"
>>>>>>>> <html><head><title>Loading...</title></head><body><script
>>>>>>>> type='text/javascript'>window.location.replace('
>>>>>>>> http://httpbin.org/get?ch=1&js=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJKb2tlbiIsImV4cCI6MTcxNTkwODczNiwiaWF0IjoxNzE1OTAxNTM2LCJpc3MiOiJKb2tlbiIsImpzIjoxLCJqdGkiOiIydjgxbW1wajdvc2w5b2M4M2swMHBwNmMiLCJuYmYiOjE3MTU5MDE1MzYsInRzIjoxNzE1OTAxNTM2NTQzNzg3fQ.Bc07CLhZ_HLw5QwfQoWotZPfoegQMRYc84bD-Wqg96k&sid=ab0e69e8-13da-11ef-911e-ea384f7d4599')
>>>>>>>> ;</script></body></html>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Regards,
>>>>>>>> Peng
>>>>>>>>
>>>>>>>> --
>>>>>> Regards,
>>>>>> Peng
>>>>>>
>>>>> --
>>>> Regards,
>>>> Peng
>>>>
>>> --
>> Regards,
>> Peng
>>
> --
Regards,
Peng


reply via email to

[Prev in Thread] Current Thread [Next in Thread]