Você cria uma página HTML de envio automático temporário, aponta o navegador para essa página e, após alguns segundos, remove o arquivo HTML temporário, pois ele não é mais necessário. Em forma de script:
#!/bin/bash
# Create an autodeleted temporary directory.
Work="$(mktemp -d)" || exit 1
trap "cd / ; rm -rf '$Work'" EXIT
# Create a HTML page with the POST data fields,
# and have it auto-submit when the page loads.
cat > "$Work/load.html" <<END
<!DOCTYPE html>
<html>
<head>
<title>…</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
function dosubmit() { document.forms[0].submit(); }
</script>
</head>
<body onload="dosubmit();">
<form action="https://www.startpage.com/do/asearch" method="POST" accept-charset="utf-8">
<input type="hidden" name="cat" value="web">
<input type="hidden" name="cmd" value="process_search">
<input type="hidden" name="language" value="english">
<input type="hidden" name="engine0" value="v1all">
<input type="hidden" name="query" value=""Nominal Animal"">
</form>
</body>
</html>
END
# Load the generated file in the browser.
firefox "file://$Work/load.html"
# Firefox returns immediately, so we want to give it a couple
# of seconds to actually read the page we generated,
# before we exit (and our page vanishes).
sleep 2
Vamos mudar o exemplo acima, para que possamos fazer uma pesquisa no StartPage em qualquer string fornecida na linha de comando:
#!/bin/bash
# Create an autodeleted temporary directory.
Work="$(mktemp -d)" || exit 1
trap "cd / ; rm -rf '$Work'" EXIT
# Convert all command-line attributes to a single query,
# escaping the important characters.
rawAmp='&' ; escAmp='&'
rawLt='<' ; escLt='<'
rawGt='>' ; escGt='>'
rawQuote='"' ; escQuote='"'
QUERY="$*"
QUERY="${QUERY//$rawAmp/$escAmp}"
QUERY="${QUERY//$rawQuote/$escQuote}"
QUERY="${QUERY//$rawLt/$escLt}"
QUERY="${QUERY//$rawGt/$escGt}"
# Create a HTML page with the POST data fields,
# and have it auto-submit when the page loads.
cat > "$Work/load.html" <<END
<!DOCTYPE html>
<html>
<head>
<title>…</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
function dosubmit() { document.forms[0].submit(); }
</script>
</head>
<body onload="dosubmit();">
<form action="https://www.startpage.com/do/asearch" method="POST" accept-charset="utf-8">
<input type="hidden" name="cat" value="web">
<input type="hidden" name="cmd" value="process_search">
<input type="hidden" name="language" value="english">
<input type="hidden" name="engine0" value="v1all">
<input type="hidden" name="query" value="$QUERY">
</form>
</body>
</html>
END
# Load the generated file in the browser.
firefox "file://$Work/load.html"
# Firefox returns immediately, so we want to give it a couple
# of seconds to actually read the page we generated,
# before we exit (and our page vanishes).
sleep 2
Tudo o que muda é o trecho em que usamos as operações de string Bash para substituir cada &
por &
, cada "
por "
, cada <
por <
e cada >
por >
, para que a cadeia de consulta possa ser gravada com segurança como o atributo value
da entrada oculta denominada query
. (Esses quatro são suficientes. Também é importante fazer o e comercial primeiro, porque as substituições subsequentes contêm "e" comercial. Como emitimos isso como o valor de uma entrada oculta, a string de consulta não é codificada em url; é apenas um conteúdo HTML normal, mas sem cota dupla (porque o valor em si é duplo).
A desvantagem de enviar solicitações POST automaticamente é que talvez seja necessário atualizar sua página HTML de envio automático de vez em quando, simplesmente porque o site pode alterar a nomenclatura da variável POST e as URLs internas sempre que quiserem.