2012-12-01 10 views
13

Przechodzę przez naszą analitykę witryny i ładuję t.co adresy URL, które odsyłają nas do naszej promocji. Próbuję dowiedzieć się, czy istnieje sposób, aby odwrócić te z powrotem do oryginalnego tweeta, skąd pochodzą, za pośrednictwem Twitter API lub w inny sposób. Nie mogę znaleźć dobrego sposobu, aby to zrobić, czy jest jeden?Jak mogę zamienić adres URL t.co na pochodzący Tweet?

+0

Sprawdź http://www.find-t.co/ –

+0

Strona find-t.co nie jest już rozpoznawana (ani nie jest zarejestrowana, prawdopodobnie została wyłączona). Jest to jednak w porządku, ponieważ zaktualizowałem własną odpowiedź tak blisko rozwiązania, jak można uzyskać bez płacenia Twitterowi za lepszy dostęp do analityki danych. – Ben

Odpowiedz

1

Nie jest to możliwe z publicznymi interfejsami API udostępnianymi przez twitter.

Jeśli dobrze rozumiem, chcesz znaleźć tweet, który pierwotnie zawierał określony link t.co. t.co, gdy następuje, rozwiązuje się w Twojej witrynie, a nie w tweecie Twittera.

-4

Gdy t.co forward wskazuje na tweet, przechodzi do strony internetowej dla tego tweeta, a kod HTML strony będzie zawierać kanoniczny adres URL.

Brzydkim sposobem na uzyskanie tych informacji jest użycie polecenia wget lub curl do przechwycenia miejsca docelowego HTML, które będzie zawierać adres URL początkowego tweeta.

Lepszym sposobem na zrobienie tego jest moduł Python, Requests (należy najpierw zainstalować ten moduł). Oto krótki skrypt z linii poleceń, które będą to robić:

#!/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) 

Ten kod będzie działać na każdym z tych URL usługi, nie tylko w miejscu t.co Twittera skracania.

Zrobiłem moje testy z Pythonem 2.7, ale jest szansa, że ​​powyższy kod będzie działał z Pythonem 3.x. Tak czy inaczej, Prośby jest twoim przyjacielem, zapoznać się z dokumentacją szczegóły:

http://docs.python-requests.org/en/latest/index.html

Przekierowanie i sekcja historia obejmuje ten przykład.

Nie wiem, jak to zrobić za pomocą Twitter API i może nie być to możliwe, jeśli wszystkie skracania adresów URL są automatyczne. Wciąż rozwiązanie oparte na interfejsie API działa tylko z adresami t.co, podczas gdy powyższy kod będzie działał na dowolnym skróconym adresie URL lub dowolnym adresie URL, który przekierowuje (na przykład kody odpowiedzi 301 lub 302) do innej lokalizacji.

Edytuj (lepiej nieco później niż nigdy): Po użyciu powyższego, aby znaleźć miejsce, do którego faktycznie skierowany jest przód t.co, pojawią się trzy lub cztery typy możliwych wyników. Najczęstszym jest to, że OP uważa, że ​​wszyscy oni są, skrócenie adresu URL wklejonego w tweet i, aby być uczciwym, to właśnie większość z nich.

Innymi możliwościami jest to, że łączy się z samym tweetem, zwykle pojawia się tylko w przypadku niektórych dłuższych tweetów (nie jest pewne, jak bardzo zwiększa się częstotliwość wraz ze wzrostem limitu znaków); jak również przekazywanie adresu URL o statusie niezależnym od adresu URL twittera, który często ma miejsce w przypadku mediów osadzonych (zdjęć i wideo); plus przesyła do adresu URL tweeta, który jest cytowany jako tweetowany lub przesyłany dalej.

Biorąc pod uwagę pierwotny scenariusz PO, żaden z tych wewnętrznych sposobów wykorzystania Twittera nie powinien być nigdy widziany, a jedynie "normalna" wysyłka jest tutaj niepokojąca. Teraz szukanie adresu t.co na twitter.com nie daje nam nic, bez względu na to, jakie kombinacje są używane.

Przeszukiwanie adresu docelowego, jednak to, co ujawnia się w skryptach podobnych do tego na początku tej odpowiedzi, jest całkiem inną sprawą. To da wyniki każdego tweeta, który jest publicznie dostępny i który opublikował ten link. Istnieją jednak pewne niedogodności, w tym:

  1. Wyniki wyszukiwania będą zawierać tweety, w których były również używane inne usługi przesyłania dalej.
  2. Nie można określić, czy wszystkie tweety powiązane z tym adresem URL wygenerowały ten sam adres t.co, czy nie.
  3. Jeśli nie, nie ma sposobu sprawdzenia, który t.co forward został wykorzystany przez który tweet.

Niemniej jednak, w połączeniu z pełnymi logami stron odsyłających na serwerze internetowym, może być możliwe dalsze ich zawężenie. Zakładając, że adres URL strony odsyłającej podaje URL tweeta, a nie po prostu twitter.com. Jest jednak bardziej prawdopodobne, że zostanie to określone przez sposób, w jaki osoba, która kliknęła łącze, zrobiła to (tj. Po prostu zobaczyła tweet w strumieniu lub gdy rozszerzyła go na tyle, aby wyświetlić jego pełny adres URL).

Podejrzewam, że skuteczność dzienników stron odsyłających będzie sporadyczna i prawdopodobnie zmniejszy się na smartfonach i tabletach, na których aplikacje w mniejszym stopniu będą miały rozszerzone tweety, aby następnie udostępnić te dane stronom trzecim.

#!/usr/bin/env python3 

import requests 
import urllib.parse 

shorturl = input("Enter the shortened URL in its entirety: ") 
r0 = requests.get(shorturl, verify=True) 
t0 = "https://twitter.com/search?f=tweets&q=" 
t1 = urllib.parse.quote_plus(r0.url) 
r1 = requests.get("{0}{1}".format(t0, t1), verify=True) 

# the results will be in r1.content 
# there may be some benefit from cutting the http:// or 
# https:// from r0.url before creating the quoted string in t1. 

To jednak jest tak dobre, jak to tylko możliwe ... bez płacenia na Twitterze za lepszy dostęp do danych.

+0

Dodatek: jeśli chcesz sprawdzić przekierowanie na stronie HTTPS, zmień wiersz 6 na następujący: r = requests.get (fwdurl, verify = False) – Ben

+0

Dodatek do addendum: zmiany w ostatnich wersjach modułu request wygenerują komunikat ostrzegawczy do weryfikacji = Fałsz, ale sprawdzanie certyfikatu zostało poprawione od zeszłego roku. Teraz zmień wiersz 6 na 'r = requests.get (fwdurl, verify = True)' i to jest w porządku zarówno dla HTTP, jak i HTTPS. Poza tym bycie jedyną odpowiedzią i otrzymywanie nagrody sprawia, że ​​komuś się uda. – Ben

+0

Powoduje zwrócenie adresu URL, do którego skrócono odnośnik, ale OP prosi o zwrócenie adresu URL tweeta, który utworzył skrócone łącze. – Glacials

0

Lista wpisów związanych z Twoimi stronami jest dostępna pod Social networks, a następnie Trackbacks bezpośrednio w Google Analytics.