2012-12-01 16 views
13

Sto analizzando il nostro sito e ho un carico di URL t.co che erano referenti di una promozione che stavamo facendo. Sto cercando di capire se c'è un modo per invertire quelle indietro al tweet originale da cui hanno avuto origine, attraverso l'API di Twitter o altri mezzi. Non riesco a trovare un buon mezzo per farlo, c'è uno?Come si inverte un URL t.co nel tweet di origine?

+0

Controlla http://www.find-t.co/ –

+0

Quel sito find-t.co non risolve più (né è registrato, presumibilmente è stato chiuso). Va bene, però, perché ho aggiornato la mia risposta con la soluzione più vicina a quella che si può ottenere senza pagare Twitter per un maggiore accesso all'analisi dei dati. – Ben

risposta

1

Questo non è possibile con le API pubbliche fornite da Twitter.

Se ho capito correttamente, si desidera trovare un tweet che in origine avesse un particolare collegamento t.co incorporato. Ad esempio, il t.co quando viene seguito si risolve nel tuo sito, non nel tweet di Twitter.

-4

Quando un t.co forward punta a un tweet, va alla pagina Web per quel tweet e l'HTML per la pagina includerà l'URL canonico.

Il brutto modo per ottenere queste informazioni è utilizzare wget o curl per afferrare la destinazione HTML che includerà l'URL per il tweet iniziale.

Un modo migliore per farlo è con il modulo Python, Richieste (è necessario prima installare questo modulo). Ecco una riga di comando breve script che lo farà:

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

Che il codice funziona su una di queste URL servizi di abbreviazione, non solo del sito t.co di Twitter.

Ho eseguito i miei test con Python 2.7, ma è probabile che il codice sopra funzionerà con Python 3.x. In entrambi i casi, le richieste è il tuo amico, vedere la documentazione per i dettagli:

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

La sezione di storia di reindirizzamento e copre questo esempio.

Non conosco un modo per farlo tramite l'API di Twitter e potrebbe non essere possibile se tutto l'accorciamento dell'URL è automatico. Ancora una soluzione basata su API funzionerebbe solo con gli indirizzi t.co, mentre il codice sopra funzionerà su qualsiasi altro URL abbreviato o qualsiasi URL che reindirizza (ad esempio i codici di risposta HTTP 301 o 302) in un'altra posizione.

Modifica (meglio un po 'più tardi che mai): Dopo aver utilizzato quanto sopra per trovare dove punta effettivamente l'avanti t.co, ci saranno tre o quattro tipi di risultati possibili. Il più comune è che è quello che l'OP crede che siano tutti, un abbreviazione di un URL incollato in un tweet e, per essere onesti, questo è ciò che molti di loro sono.

Le altre possibilità sono che si ricolleghi al tweet stesso, questo di solito appare solo con alcuni tweets piuttosto lunghi (non è sicuro quanto aumenti di frequenza con il limite di caratteri troppo); così come l'inoltro all'URL di uno stato indipendente dall'URL dello stato dell'autore del tweet, che è spesso il caso dei media incorporati (immagini e video); più avanti all'URL di un tweet che viene citato tweet o ritwittato.

Dato lo scenario originale dell'OP, nessuno di quegli usi interni di Twitter dovrebbe mai essere visto e solo l'inoltro "normale" è motivo di preoccupazione. Ora la ricerca dell'indirizzo t.co su twitter.com non ci avvale di nulla, indipendentemente dalle combinazioni utilizzate.

Cercare l'indirizzo di destinazione, tuttavia, ciò che è rivelato da script come quello all'inizio di questa risposta, tuttavia, è un'altra cosa. Ciò produrrà i risultati di ogni tweet che è pubblicamente accessibile e che ha pubblicato quel link. Ci sono, tuttavia, alcuni svantaggi tra cui:

  1. I risultati della ricerca includeranno tweet in cui sono stati utilizzati anche altri servizi di inoltro.
  2. Non è possibile stabilire se tutti i tweet collegati a quell'URL abbiano generato lo stesso indirizzo t.co oppure no.
  3. In caso contrario, non c'è modo di vedere quale t.co forward è stato utilizzato da quale tweet.

Tuttavia, in combinazione con i registri di referrer completi su un server Web, potrebbe essere possibile restringere ulteriormente. Supponendo che l'URL del referrer indichi l'URL del tweet e non semplicemente twitter.com. Ciò, tuttavia, è più probabile che sia determinato dal modo in cui la persona che fa clic sul collegamento lo fa (cioè vedevano semplicemente il tweet in un flusso o lo avevano espanso abbastanza da mostrare l'URL completo).

Sospetto che l'efficacia dei log dei referrer sarà sporadica e probabilmente ridotta su smartphone e tablet in cui le app in uso hanno minori probabilità di avere tweet espansi in quel modo per poi fornire tali dati a siti Web di terzi.

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

Che, tuttavia, è buono come si arriva ... senza pagare Twitter per l'accesso ai dati avanzata.

+0

Addendum: se è necessario controllare un reindirizzamento su un sito HTTPS, modificare la riga 6 con questo: r = requests.get (fwdurl, verify = False) – Ben

+0

Addendum all'addendum: le modifiche nelle versioni recenti del modulo richieste produrranno un messaggio di avviso per verify = False, ma il controllo dei certificati è stato migliorato rispetto all'anno scorso. Quindi ora cambia la riga 6 in 'r = requests.get (fwdurl, verify = True)' e va bene sia per HTTP che per HTTPS. Inoltre, essere l'unica risposta e ottenere la taglia rende il downvote di qualcuno esilarante. – Ben

+0

Restituisce l'URL al quale il link abbreviato è stato inoltrato, ma OP sta chiedendo un modo per restituire l'URL del tweet che ha creato il collegamento abbreviato. – Glacials

0

L'elenco di tweet relativi alle tue pagine è disponibile al numero Social networks e quindi al menu Trackbacks direttamente in Google Analytics.

Problemi correlati