GNU/Linux >> Znalost Linux >  >> Linux

Získat cílovou URL po přesměrování curl

Díky, to mi pomohlo. Udělal jsem několik vylepšení a zabalil to do pomocného skriptu „finalurl“:

#!/bin/bash
curl $1 -s -L -I -o /dev/null -w '%{url_effective}'
  • -o výstup na /dev/null
  • -I ve skutečnosti nestahujte, pouze zjistěte konečnou adresu URL
  • -s tichý režim, žádné ukazatele průběhu

To umožnilo volat příkaz z jiných skriptů, jako je tento:

echo `finalurl http://someurl/`

jako další možnost:

$ curl -i http://google.com
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Sat, 19 Jun 2010 04:15:10 GMT
Expires: Mon, 19 Jul 2010 04:15:10 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

Ale nepřekročí to první.


curl 's -w volba a podproměnná url_effective je to, co hledáte.

Něco jako

curl -Ls -o /dev/null -w %{url_effective} http://google.com

Více informací

-L         Follow redirects
-s         Silent mode. Don't output anything
-o FILE    Write output to <file> instead of stdout
-w FORMAT  What to output after completion

Další

Možná budete chtít přidat -I (to je velké i ), což způsobí, že příkaz nebude stahovat žádné "tělo", ale pak také používá metodu HEAD, což není to, co otázka obsahovala, a riskuje změnu toho, co server dělá. Někdy servery nereagují dobře na HEAD, i když reagují dobře na GET.


Linux
  1. Debian – s názvem balíčku Debian, jak získat adresu URL na nejnovější adresu URL .deb??

  2. Jak získat pouze soubory vytvořené po rande s Ls?

  3. Kde získat nový řetězec po spuštění `sub` v Awk?

  1. Získejte informace o záhlaví pomocí cURL

  2. Linux:příkaz pro otevření URL ve výchozím prohlížeči

  3. Jak nasměruji nebo přesměruji výstup curl -v?

  1. Jak dosáhnu toho, aby cURL nezobrazoval indikátor průběhu?

  2. provádění požadavků HTTP pomocí cURL (pomocí PROXY)

  3. Jak získat adresu URL souboru Dropbox z příkazového řádku?