tinyurl.com -os url "visszafejtése"

Sziasztok!

Van az alábbi PHP script, ami működik egy linuxos gépen, tehát a tinyurl-ról megkapom az eredeti linket (a valami nem valós!!! :)):

<?php

$u = 'https://tinyurl.com/valami';

function reverse_tinyurl($url){
    $url = explode('.com/', $url);
    $url = 'https://preview.tinyurl.com/'.$url[1];
    $preview = file_get_contents($url);
    preg_match('/redirecturl" href="(.*)">/', $preview, $matches);
    return $matches[1];
}

echo '<a href="' . reverse_tinyurl($u) . '">Értekezlet (Google CHROME alatt nyisd meg!!!)</a>';
?>

Ezt szeretném megcsinálni Python alatt, de akárhogy küzdök, nem sikerül.

Próbálom használni a dns.resolver modult, hogy a scripten belül megadjam a DNS szervernek a 8.8.8.8-at, de Timeout-ot dob a script.

 

Van ötletetek? A resolv.conf-ban benne van egyébként a 8.8.8.8

Hozzászólások

preview = requests.get(url)

4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.

import requests
import re

u = 'https://tinyurl.com/valami'

def reverse_tinyurl(url):
    url = url.split('.com/')
    url = 'https://preview.tinyurl.com/' + url[1]
    preview = requests.get(url).text
    output = re.search('redirecturl" href="(.*)">', preview)
    return output.group(1)

print('<a href="' + reverse_tinyurl(u) + '">Értekezlet (Google CHROME alatt nyisd meg!!!)</a>')

ez ugyan az a kód (ugyanolyan rossz megvalósítással), mint a PHP

4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.

requests: http (es hasonlo) requesteket kuld
bs4: beautifulsoup, html (meg hasonlo) elemzo, celszeru a html5lib-et vagy hasonlit is feltenni hozza
re: regularis kifejezes modul

Ezekkel a legtobb webes elemzo osszedobhato eleg hamar.

Amugy a php-s megoldasod is csak akkor megy, ha engedelyezik a file_get_contents-hez a http url-ek hasznalatat, ami sok helyen tiltva van. Ilyenkor pl. libcurl-el erheted el ugyanezt.

When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Jüvő héten próbálom, és beküldöm az esetleges hibákat ill. ha lesz, akkor a megoldást is.

import requests

url = 'https://tinyurl.com/valami'
session = requests.Session()  # so connections are recycled
resp = session.head(url, allow_redirects=True)
print(resp.url)

Forrás: link