Bash 的 /dev/tcp 功能为用户提供了一个直接的方式,通过 TCP 套接字发送 HTTP 请求,这一功能可以在没有额外工具的情况下执行简单的网络操作。

发送HTTP GET请求

#!/bin/bash
# 打开一个 TCP 连接到 baidu.com 的 80 端口,并将其分配给文件描述符 3
exec 3<>/dev/tcp/baidu.com/80
# 向文件描述符 3 发送 HTTP 请求
echo -ne "GET / HTTP/1.1\r\nHost: baidu.com\r\nConnection: close\r\n\r\n" >&3
# 从文件描述符 3 读取响应并输出到标准输出
cat <&3
# 关闭文件描述符 3
exec 3<&-

脚本模板

#!/bin/bash

exec 3<>/dev/tcp/baidu.com/80
lines=(
'GET / HTTP/1.1'
'Host: baidu.com'
'Connection: close'
''
)
printf '%s\r\n' "${lines[@]}" >&3
while read -r data <&3; do
echo "got server data: $data"
done
exec 3>&-

原文:如何在 Bash 中没有 curl 或 wget 情况下发出 HTTP 请求?

在没有curl和wget情况下发送HTTP请求的更多相关文章

  1. .Net Core下发送WebRequest请求的两种方式

    1.使用RestSharp.NetCore 2.使用WebApi请求方式

  2. 在Linux命令行下发送html格式的邮件

    在Linux利用formail+sendmail来发送带图片的邮件 formail接收html格式的文件作为邮件的内容,这样就可以解决发送带图片邮件的问题了,因为html中可以插入图片,只要给出的im ...

  3. python 学习笔记之手把手讲解如何使用原生的 urllib 发送网络请求

    urllib.urlopen(url[,data[,proxies]]) : https://docs.python.org/2/library/urllib.html python 中默认自带的网络 ...

  4. 怎么用PHP发送HTTP请求(POST请求、GET请求)?

    file_get_contents版本: 01 /** 02 * 发送post请求 03 * @param string $url 请求地址 04 * @param array $post_data ...

  5. Linux命令发送Http的get或post请求(curl和wget两种方法)

    Http请求指的是客户端向服务器的请求消息,Http请求主要分为get或post两种,在Linux系统下可以用curl和wget命令来模拟Http的请求.下面就来介绍一下Linux系统如何模拟Http ...

  6. 发现linux主机再用代理上网的情况下不能用wget从外网下载资源

    公司禁网(也不是完全禁,能连接外网数据库,不能下载东西,不能打开网页,但是却能打开谷歌的收索页面,只是不能点进网页) 发现linux主机再用代理上网的情况下不能用wget从外网下载资源,但是却可以从内 ...

  7. 我大概知道他在说什么了,是对内存单元的竞争访问吧。Python有GIL,在执行伪码时是原子的。但是伪码之间不保证原子性。 UDP丢包,你是不是做了盲发?没有拥塞控制的情况下,确实会出现丢包严重的情况。你先看看发送速率,还有是否带有拥塞控制。

    我大概知道他在说什么了,是对内存单元的竞争访问吧.Python有GIL,在执行伪码时是原子的.但是伪码之间不保证原子性.   UDP丢包,你是不是做了盲发?没有拥塞控制的情况下,确实会出现丢包严重的情 ...

  8. curl 与wget的区别

    CURL与wget的区别 当想要直接通过linux 命令行下载文件,马上就能想到两个工具:wget 和 CURL.它们有很多一样的特征,可以很轻易的完成一些相同的任务,虽然它们有一些相似的特征,但它们 ...

  9. mysql-unsha1:在未知密码情况下,登录任意MYSQL数据库

    摘要 这个POC用于在不知道明文密码的情况下对启用了密码安全认证插件(默认开启插件:mysql_native_password)的MYSQL数据库进行登录. 前提条件为: 1.为了获取到已知用户的ha ...

  10. 每天一个linux命令13之curl发送http请求

    一.get请求 curl "http://www.baidu.com"  如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地 curl -i "http:// ...

随机推荐

  1. 【记录】Python3|Selenium4 极速上手入门(Windows)

    环境:Windows 版本:python3,selenium 4.11.2 写这个是方便自己重装电脑时重新装 Selenium,懒得每次都重新找链接. 文章目录 1 装 Chrome Edge 其他浏 ...

  2. Vue之“表单修饰符”

    1.lazy:失去焦点时处理 案例1 2.number:限制只能输入数字 案例1 3.trim:去掉前后空格 案例1

  3. AD 侦查-SMB_2

    本文通过 Google 翻译 AD Recon – NetBIOS (137/138/139) and SMB (445) Part-2 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校 ...

  4. Django实例(3)-用户连数据库登入系统

    App01--->urls.py from django.contrib import adminfrom django.conf.urls import urlfrom app01 impor ...

  5. SQL 强化练习 (五)

    果然日常练练这些 sql 是非常有必要的, 这几日的报表开发, 用一款过程软件 fineReport, 相对于我之前用 Tableau 来做报表, 这个帆软, 确实更加适合中国人哦, 而Tableau ...

  6. 思科安全大模型SOC作业应用分析

    思科与Meta联合推出的 Foundation-sec-8B 大模型及 AI Defenders工具包,标志着AI技术在网络安全领域的深度融合与创新突破.两者的协同不仅重构了传统安全运营模式,更开创了 ...

  7. 在CentOS 7虚拟机上正确安装Redis

    在CentOS 7虚拟机上正确安装Redis,可以按照以下步骤进行操作: 更新系统软件包:sudo yum update 安装Redis依赖库:sudo yum install epel-releas ...

  8. Stream流中map与flatMap区别|转

      map和flatMap都是对流中的每一个元素,执行入参中的函数式方法,只是在函数式方法的返回值上有区别: map中函数式方法返回值为对象,也就是原始流中有n个元素,处理之后的流中元素个数也是n.即 ...

  9. buck参数工具分享

    工具链接:https://cnblogs-img.oss-cn-hangzhou.aliyuncs.com/docs/buck.xls

  10. 「Note」数据结构方向 - 数据结构进阶

    1. 平衡树(FHQ-Treap) 1.1. 介绍 功能强大的平衡树,以至于我根本没学 Treap 以及 Splay(LCT 里的另谈),缺点就大概是常数大. FHQ-Treap 核心操作在于分裂与合 ...