Bash TorSocks 问题
Bash TorSocks Issue
理论上,我使用此脚本的目标是随机生成 .onion urls 并检查它们是否存在。基本上,status 变量发送 HEAD 请求然后返回响应。 head 从响应中获取第一行,然后 grep 在第一行中搜索 HTTP header,将输出发送到 /dev/null。如果一切顺利,status 应该设置为 true。我使用 if 语句来检查 status 是否为真。如果为真,则输出 "this service exists",如果 status 不为真,则输出 "this service does not exist"。
问题是,如果洋葱 url 不存在,则 torsocks returns 会出错。
错误是:
[Jul 03 17:09:23] ERROR torsocks[4422]: General SOCKS server failure (in socks5_recv_connect_reply() at socks5.c:516)
我证实该命令确实适用于合法的现有洋葱 urls,这意味着该错误显然与 torsocks 有关。
有人知道解决方案或可能的修复方法吗?我找不到任何有用的东西。
这是我的代码:
#!/bin/bash
url="http://"$(cat /dev/urandom | env LC_CTYPE=C tr -dc 'a-z0-9' | fold -w 16 | head -n 1)".onion";
echo "[i] Scanning $url";
status=$(torsocks curl -s --head $url | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null);
if $status; then
echo "[+] Valid hidden service $url";
else
echo "[-] Invalid hidden service $url";
fi
非常感谢所有帮助。
您根本不会分配 status
任何非空值。
value=$(something >/dev/null)
... 丢弃 something
的输出(这就是 >/dev/null
所做的),因此总是无条件地分配一个空字符串给value
(因为$(...)
——命令替换——捕获输出,而不是退出状态)。
此外,您不会丢弃错误消息,因为它们在 stderr (FD 2) 而不是 stdout (FD 1) 上。
对意图进行一些猜测,也许你想要:
if torsocks curl --fail --head "$url" >/dev/null 2>&1; then
echo "[+] Valid hidden service $url";
else
echo "[-] Invalid hidden service $url";
fi
理论上,我使用此脚本的目标是随机生成 .onion urls 并检查它们是否存在。基本上,status 变量发送 HEAD 请求然后返回响应。 head 从响应中获取第一行,然后 grep 在第一行中搜索 HTTP header,将输出发送到 /dev/null。如果一切顺利,status 应该设置为 true。我使用 if 语句来检查 status 是否为真。如果为真,则输出 "this service exists",如果 status 不为真,则输出 "this service does not exist"。
问题是,如果洋葱 url 不存在,则 torsocks returns 会出错。
错误是:
[Jul 03 17:09:23] ERROR torsocks[4422]: General SOCKS server failure (in socks5_recv_connect_reply() at socks5.c:516)
我证实该命令确实适用于合法的现有洋葱 urls,这意味着该错误显然与 torsocks 有关。
有人知道解决方案或可能的修复方法吗?我找不到任何有用的东西。
这是我的代码:
#!/bin/bash
url="http://"$(cat /dev/urandom | env LC_CTYPE=C tr -dc 'a-z0-9' | fold -w 16 | head -n 1)".onion";
echo "[i] Scanning $url";
status=$(torsocks curl -s --head $url | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null);
if $status; then
echo "[+] Valid hidden service $url";
else
echo "[-] Invalid hidden service $url";
fi
非常感谢所有帮助。
您根本不会分配 status
任何非空值。
value=$(something >/dev/null)
... 丢弃 something
的输出(这就是 >/dev/null
所做的),因此总是无条件地分配一个空字符串给value
(因为$(...)
——命令替换——捕获输出,而不是退出状态)。
此外,您不会丢弃错误消息,因为它们在 stderr (FD 2) 而不是 stdout (FD 1) 上。
对意图进行一些猜测,也许你想要:
if torsocks curl --fail --head "$url" >/dev/null 2>&1; then
echo "[+] Valid hidden service $url";
else
echo "[-] Invalid hidden service $url";
fi