Php bit.ly重定向方法

Php bit.ly重定向方法,php,header,bit.ly,Php,Header,Bit.ly,如果bit.ly除了简单的Location:header来重定向用户之外,还有什么想法吗 Facebook可以在使用bit.ly链接时解析有关最终目的地的信息,但不能解析我的项目http://guubo.com/aaaaab使用简单位置:标题的链接 我检查了一下小标题,它们看起来很普通。我进一步查看了它。从命令行尝试以下操作 curl -D headers.txt http://bit.ly/4m1AUx 然后可以查看headers.txt的内容,如下所示 HTTP/1.1 301 Moved

如果bit.ly除了简单的
Location:
header来重定向用户之外,还有什么想法吗

Facebook可以在使用
bit.ly
链接时解析有关最终目的地的信息,但不能解析我的项目
http://guubo.com/aaaaab
使用简单
位置:
标题的链接


我检查了一下小标题,它们看起来很普通。

我进一步查看了它。从命令行尝试以下操作

curl -D headers.txt http://bit.ly/4m1AUx
然后可以查看
headers.txt
的内容,如下所示

HTTP/1.1 301 Moved
Server: nginx
Date: Sat, 28 May 2011 13:18:21 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Set-Cookie: _bit=4de0f61d-001f7-008b9-d8ac8fa8;domain=.bit.ly;expires=Thu Nov 24 08:18:21 2011;path=/; HttpOnly
Cache-control: private; max-age=90
Location: http://slashdot.org/
MIME-Version: 1.0
Content-Length: 112
所以,不,他们在做正常的301重定向。如果需要,您可以在PHP代码中使用进行相同的检查,以获取标题以确定真实的站点。

请参阅

我实现了在纯文本文件的每一行获取一个url,每一行有一个缩短的url,即相应的重定向url:

<?php
// input: textfile with one bitly shortened url per line
$plain_urls = file_get_contents('in.txt');
$bitly_urls = explode("\r\n", $plain_urls);

// output: where should we write
$w_out = fopen("out.csv", "a+") or die("Unable to open file!");

foreach($bitly_urls as $bitly_url) {
  $c = curl_init($bitly_url);
  curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36');
  curl_setopt($c, CURLOPT_FOLLOWLOCATION, 0);
  curl_setopt($c, CURLOPT_HEADER, 1);
  curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 20);
  // curl_setopt($c, CURLOPT_PROXY, 'localhost:9150');
  // curl_setopt($c, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
  $r = curl_exec($c);

  // get the redirect url:
  $redirect_url = curl_getinfo($c)['redirect_url'];

  // write output as csv
  $out = '"'.$bitly_url.'";"'.$redirect_url.'"'."\n";
  fwrite($w_out, $out);
}
fclose($w_out);

我怀疑他们进行了提取(例如,使用
curl
),然后检查标题。确保没有html标记。我怀疑FB正在调用bit.ly API,因为它非常流行,足以保证所需的努力:Facebook/bit.ly?Facebook显然做到了这一点,是的,这就是问题所在:虽然它可以使用bit.ly链接,但它不能使用guubo.com。我想知道他们有什么不同。Bit.ly不这样做,它们返回空的正文。@zzlawlzz根本不返回任何内容@xs0呢?
header('HTTP/1.1 301 Moved');标题('位置:'。$url)
当链接在Facebook.com上共享时,它仍然会共享guubo.com的详细信息,而不是
$url
。因此,答案是Facebook正在做一些不同的事情,而不是一点点。从您的角度来看,这是不幸的,如果您试图编写一个URL缩短器,因为它可能无法绕过.FWIW,您还可以使用
curl-I
curl-D-
将响应头打印到标准输出,而不是保存到文件中。是的,我最近设置了一个别名来转储它们-
alias headers='curl-s-D--o/dev/null'
,然后只需调用
headers somesite.com