我想编写一个函数,它采用 archive.is
(或 archive.fo
、archive.li
或 >archive.today
) 链接作为输入,并给出原始站点的 URL 作为输出。
例如,如果输入是 'http://archive.is/9mIro'
,那么我希望输出是 'http://www.dailytelegraph.com .au/news/nsw/australian-army-bans-male-recruits-to-get-female-numbers-up/news-story/69ee9dc1d4f8836e9cca7ca2e3e5680a'
。
如何在 python 中做到这一点?
是的,您的方法可能适用于另一个站点,但 archive.is
似乎可以保护他们的数据免受自动查询,当我尝试 curl, python (urllib2) 我收到错误 Empty reply来自服务器
。你需要像 phantomjs 这样模仿真实浏览器的东西。而且我相信它只适用于少数查询,然后会显示验证码或给出错误。他们似乎也记录了 ip 地址,甚至 phantomjs 从尝试 curl 或 python 的同一台机器上得到错误。
下面是 phantomjs 代码:
var webPage = require('webpage');
var page = webPage.create();
var system = require('system');
var args = system.args;
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36';
function getOriginalUrl(shortUrl, cb) {
page.open(shortUrl, function(status) {
//console.log(status);
var url = page.evaluate(function(){
return document.querySelector('form input').value;
});
cb(url);
});
}
if (args.length > 1) {
getOriginalUrl(args[1],function(url){
console.log(url);
phantom.exit();
});
} else {
console.log('Pass url');
phantom.exit();
}
我是一名优秀的程序员,十分优秀!