标签: http

我如何能够 telnet 到 HTTP 端口 80?

在谷歌搜索后,我发现我们可以telnet将网络服务器连接到其 http 端口并用于GET检索 html 页面。

例如:

$ telnet web-server-name 80
Run Code Online (Sandbox Code Playgroud)

但我无法理解这怎么可能?

我认为如果端口 80 用于 http 服务器,那么端口 80 只会侦听http请求。但是我怎么能telnet到一个HTTP端口呢?

不是telnetHTTP两个不同的协议吗?

networking http telnet

19
推荐指数
2
解决办法
5万
查看次数

与 Web 服务器的目录列表同步

有没有一种简单的方法可以通过 HTTP 使文件夹与目录列表保持同步?

编辑

感谢 wget 的提示!我创建了一个 shell 脚本并将其添加为 cron 作业:

remote_dirs=( "http://example.com/" "…") # Add your remote HTTP directories here
local_dirs=(  "~/examplecom" "…")

for (( i = 0 ; i < ${#local_dirs[@]} ; i++ )) do
cd "${local_dirs[$i]}"
wget -r -l1 --no-parent -A "*.pdf" -nd -nc ${remote_dirs[$i]}
done

# Explanation:
# -r            to download recursively
# -l1           to include only one directory depth
# --no-parent   to exclude parent directories
# -A "*.pdf"    to accept only .pdf files
# …
Run Code Online (Sandbox Code Playgroud)

http synchronization

16
推荐指数
2
解决办法
2万
查看次数

在发生时监控传出的 Web 请求

我想从我的桌面查看所有传出 HTTP 请求的列表。我认为应该可以使用服务器名称指示 (SNI) 监控本地客户端的 HTTPS 主机名。

OS X 有一个很好的 GUI 实用程序,称为Little Snitch,它是一个基于应用程序的 HTTP 监视器和防火墙规则前端。

我会满足于一个不错的终端实用程序。tcpdump是矫枉过正,因为我只想实时查看流量的去向而不是传输的数据。理想情况下,我也想看看是什么进程发出了请求,但只要看看是什么拨号回家就不错了。

networking monitoring http privacy https

13
推荐指数
1
解决办法
1万
查看次数

将 HTTP 服务器挂载为文件系统

我有一台机器,我希望在上面安装多个远程服务器以集中访问它们。对于基于 Linux 的远程系统,我使用的 SSHFS 工作正常。但是对于 Windows 系统或没有 SSH 的系统,它们都安装了某种形式的 HTTP 服务器来共享文件(因此它们都启用了目录浏览)。

我可以像 SSHFS 一样将 HTTP 服务器安装为本地文件系统,以便我可以在本地安装所有这些远程服务器并以统一的方式呈现吗?

filesystems remote mount http

12
推荐指数
2
解决办法
2万
查看次数

Wget 返回二进制文件而不是 html?

我正在使用 wget 下载静态 html 页面。W3C 验证器告诉我该页面以 UTF-8 编码。然而,当我在下载后查看文件时,我得到了一堆二进制废话。我在 Ubuntu 上,我认为默认编码是 UTF-8?这就是我的语言环境文件似乎所说的。为什么会发生这种情况,我该如何纠正?

另外,看起来像Content-Encoding: gzip。也许这会有所不同?

这是一个简单的请求:

wget https://www.example.com/page.html
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

wget https://www.example.com/page.html -q -O - | iconv -f utf-16 -t utf-8 > output.html
Run Code Online (Sandbox Code Playgroud)

哪个返回: iconv: illegal input sequence at position 40

cat'ing 文件返回如下所示的二进制文件:

l???u?`?q"?:)s??d?__??~i??6n)T?$H?#???QJ
Run Code Online (Sandbox Code Playgroud)

结果xxd output.html | head -20

00000000: 1f8b 0800 0000 0000 0003 bd56 518f db44  ...........VQ..D
00000010: 107e a6bf 62d4 8a1e 48b9 d8be 4268 9303  .~..b...H...Bh..
00000020: 8956 082a 155e 7a02 21dd cbd8 3bb6 97ae  .V.*.^z.!...;... …
Run Code Online (Sandbox Code Playgroud)

character-encoding gzip wget http

12
推荐指数
2
解决办法
3710
查看次数

如何在 GNU make 中使用来自 HTTP 的文件作为先决条件?

我想在我的 makefile 中使用来自万维网的文件作为先决条件:

local.dat: http://example.org/example.gz
    curl -s $< | gzip -d | transmogrify >$@
Run Code Online (Sandbox Code Playgroud)

如果远程文件比本地文件新,我只想“transmogrify”,就像make正常操作一样。

希望保留的高速缓存副本example.gz -文件都很大,而且我不需要原始数据。最好我想完全避免下载文件。目标是使用-jmake 标志并行处理其中的一些。

什么是解决这个问题的干净方法?我可以想到几种方法:

  • 保留一个空的虚拟文件,每次重新创建目标时都会更新
  • 一些使用 GNU make 的新插件系统插件(我对此一无所知)
  • 在本地文件系统中挂载 HTTP 服务器的 make-agnostic 方式

在进一步挖掘之前,我需要一些建议,最好是具体的例子!

remote timestamps http gnu-make

11
推荐指数
1
解决办法
2025
查看次数

是否有任何命令行通用 HTTP 代理(如 Squid)?

我可以轻松地使用 Netcat(或 Socat)来捕获我的浏览器和特定主机:端口之间的流量。

但是对于 Linux,是否存在类似 Squid 的 HTTP 代理的任何命令行对应物,我可以使用它来捕获我的 HTTP 客户端(浏览器或命令行程序)和任意主机:端口之间的流量?

command-line proxy http squid

10
推荐指数
2
解决办法
1万
查看次数

除了SeleniumRC,还有什么好的工具可以获取网页,包括JavaScript后期绘制的内容?

一个主要的缺点curl是越来越多的网页的主要内容是由在初始 HTTP 响应之后发生的 JavaScript AJAX 响应绘制的。curl从不接受这个后期绘制的内容。

因此,为了从命令行获取这些类型的网页,我只能用 Ruby 编写脚本来驱动 SeleniumRC 启动 Firefox 实例,然后在这些 AJAX 调用完成后返回源 HTML。

为此类问题提供更精简的命令行解决方案会好得多。有谁知道吗?

wget html http curl selenium

8
推荐指数
1
解决办法
1357
查看次数

需要在防火墙上打开哪些端口才能访问 Internet?

假设我有一个防火墙,可以阻止来自所有来源/目的地的所有端口。

我需要打开哪些端口才能成功运行:

ping google.com
Run Code Online (Sandbox Code Playgroud)

...还有我必须打开的任何其他端口才能通过浏览器浏览 google.com 吗?

我试过打开端口 53(dns) 80(http) 和 443(https);这还不够,我正在使用 iptables 但我不是在询问如何在 iptables 上配置它,我只是询问需要打开哪些端口,而不管您可能使用的是哪个基于端口的防火墙。

firewall dns ping http port-forwarding

8
推荐指数
1
解决办法
3万
查看次数

如何在使用 wget 的情况下获得 401 的 http 服务器响应?

我需要在各种情况下测试我的 http 服务器响应,即使身份验证失败也是如此。如果身份验证失败,我的服务器将返回401 Unauthorized一个响应主体,其中包含简单的Unauthorized(或者可能是其他一些详细消息)。

使用 eg curlor httpie,我得到了那些响应体,以防万一401

$ curl http://10.5.1.1/bla 
Unauthorized
$ curl http://10.5.1.1/bla --digest --user joe:wrong 
Unauthorized
$ http http://10.5.1.1/bla -b
Unauthorized
$ http http://10.5.1.1/bla -b --auth-type digest --auth joe:wrong
Unauthorized
Run Code Online (Sandbox Code Playgroud)

但是当使用 wget 尝试这个时,我没有输出:

$ wget http://10.5.1.1/bla -q -O /dev/stdout
$ wget http://10.5.1.1/bla -q -O /dev/stdout --user joe --password wrong
Run Code Online (Sandbox Code Playgroud)

在这种情况下,wget 返回退出代码 6,但我需要检查响应消息。

这是使用 httpie 捕获的完整流量的转储:

$ http http://10.5.1.1/bla --print hbHB
GET /bla HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: …
Run Code Online (Sandbox Code Playgroud)

wget http

7
推荐指数
2
解决办法
9503
查看次数