30

t.co リンクが与えられた場合、リンクが解決される場所を確認するにはどうすればよいですか? たとえば、t.co/foo がある場合、domain.com/bar を返す関数またはプロセスが必要です。

4

8 に答える 8

20

あなたが制御できない外部 API には近づかないでしょう。これは、潜在的な障害点となる依存関係をアプリケーションに導入するだけであり、使用に費用がかかる可能性があります。

CURL はこれを非常にうまく行うことができます。PHPで行った方法は次のとおりです。

function unshorten_url($url) {
  $ch = curl_init($url);
  curl_setopt_array($ch, array(
    CURLOPT_FOLLOWLOCATION => TRUE,  // the magic sauce
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_SSL_VERIFYHOST => FALSE, // suppress certain SSL errors
    CURLOPT_SSL_VERIFYPEER => FALSE, 
  ));
  curl_exec($ch); 
  return curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
}

これを他の言語に適用したりcurl、UNIX システムでコマンドを使用してスクリプト化したりすることもできると確信しています。

http://jonathonhill.net/2012-05-18/unshorten-urls-with-php-and-curl/

于 2012-05-19T00:12:43.177 に答える
8

curl -s -o /dev/null --head -w "%{url_effective}\n" -L "https://t.co/6e7LFNBv"

  • --headまたは-IHTTP ヘッダーのみをダウンロードします
  • -wまたは--write-out出力後に指定された文字列を出力します
  • -Lまたは--locationロケーションヘッダーに従います
于 2012-07-04T09:28:37.657 に答える
7

コマンドラインから実行したい場合は、curlの詳細オプションが役に立ちます。

curl -v <url>

HTTP応答を提供します。t.coの場合、HTTP / 301応答(永続的に移動)が返されるようです。次に、短縮されたURLの背後にあるURLを指す[場所]フィールドがあります。

于 2011-06-28T01:50:07.470 に答える
4

これがPythonソリューションです。

import urllib2

class HeadRequest(urllib2.Request):
    def get_method(self): return "HEAD"

def get_real(url):
    res = urllib2.urlopen(HeadRequest(url))
    return res.geturl()

実際のTwittert.coリンクでテスト済み:

url = "http://t.co/yla4TZys"
expanded = get_real(url)

拡張= http://twitter.com/shanselman/status/276958062156320768/photo/1

試してみてください-例外として、あなたは行ってもいいです。

于 2012-12-07T09:15:18.970 に答える
2

別の Python ソリューション。今回は、urllib2 (および残りのすべてのライブラリ) の代わりに requests モジュールに依存しています。

#!/usr/bin/env python

import requests

shorturl = raw_input("Enter the shortened URL in its entirety: ")
r = requests.get(shorturl)

print("""
The shortened URL forwards to:

    %s
""" % r.url)
于 2013-09-21T22:30:36.760 に答える
0

これは、このスレッドの他の回答とexample()RCurl パッケージのコードから移植された R ソリューションです。

unshorten_url <- function(uri){
        require(RCurl)
        if(RCurl::url.exists(uri)){
                # listCurlOptions()
                opts <- list(
                        followlocation = TRUE,  # resolve redirects
                        ssl.verifyhost = FALSE, # suppress certain SSL errors
                        ssl.verifypeer = FALSE, 
                        nobody = TRUE, # perform HEAD request
                        verbose = FALSE
                );
                curlhandle = getCurlHandle(.opts = opts)
                getURL(uri, curl = curlhandle)
                info <- getCurlInfo(curlhandle)
                rm(curlhandle)  # release the curlhandle!
                info$effective.url
        } else {
                # just return the url as-is
                uri
        }
}
于 2015-12-20T17:54:17.167 に答える
0

この Java コードを試すことができます。そのようなコードは、Java が所有する HttpURLConnection を使用します。: http://www.srccodes.com/p/article/37/expand-shortened-link-using-java?fb_action_ids=1544985322486585&fb_action_types=og.likes

この URL Expander はどのように機能しますか? 短縮 URL への HttpURLConnection を作成します ( http://goo.gl/WT6eFwなど)。

HTTPヘッダーフィールド「Location」の値を抽出します。この値は、展開された、または実際のリンク先 URL に他なりません。

接続を閉じます。

于 2015-12-26T05:47:51.390 に答える