理论上,我使用这个脚本的目的是随机生成.onion urls并检查它们是否存在。基本上,status变量是发送一个HEAD请求,然后返回响应。head从响应中抓取第一行,然后grep在第一行中搜索HTTP头,将输出发送到/dev/null。如果一切顺利,应将状态设置为true。我使用if语句来检查状态是否为真。如果为真,则输出“此服务存在”,而如果状态不为真,则输出“此服务不存在”。
问题是,如果洋葱url不存在,torsocks将返回一个错误。
错误是:
[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我们非常感谢所有的帮助。
发布于 2015-07-03 22:37:17
您根本没有给status分配任何非空值。
value=$(something >/dev/null)...throws删除了something的输出(这就是>/dev/null所做的),因此总是无条件地将空字符串分配给value (因为$(...) --命令替换--捕获输出,而不是退出状态)。
此外,您没有丢弃错误消息,因为这些消息位于stderr (Fd2)上,而不是stdout (Fd1)上。
在意图上做出一些猜测,也许你想要的是:
if torsocks curl --fail --head "$url" >/dev/null 2>&1; then
echo "[+] Valid hidden service $url";
else
echo "[-] Invalid hidden service $url";
fihttps://stackoverflow.com/questions/31214857
复制相似问题