Как изменить URL-адрес t.co на исходный текст?

Я просматриваю аналитику нашего сайта и загружаю URL-адреса t.co, которые были ссылками на рекламную кампанию, которую мы проводили. Я пытаюсь выяснить, есть ли способ отменить их обратно к исходному твиту, где они возникли, через API Twitter или другими способами. Кажется, я не могу найти хороший способ сделать это, но есть ли там?

Ответ 1

Это невозможно с публичными API, которые предоставляет твиттер.

Если я правильно понял, вы хотите найти чириканье, в котором первоначально была встроена определенная ссылка t.co. т.е. t.co после этого разрешает ваш сайт, а не твиттер.

Ответ 2

  1. Узнайте, какой из исходных URL-адресов укороченный URL указывает, например, с помощью службы, например http://www.getlinkinfo.com
  2. Вставить этот оригинальный URL-адрес в поле поиска Google

Если вы специально ищете ссылки из Twitter, сделайте так: site:twitter.com "https://example.com"

Ответ 3

Список твитов, относящихся к вашим страницам, доступен в разделе " Social networks а затем " Trackbacks прямо в Google Analytics.

Ответ 4

Если вы используете API поиска в Твиттере, вы можете найти твиты, в которых упоминается URL t.co (если они вам видны), и найти ссылку таким образом.

Вот какой-то Python для этого, взятый из более длинного поста в блоге, который я написал:

from requests_oauthlib import OAuth1Session


sess = OAuth1Session(
    client_key=TWITTER_CONSUMER_KEY,
    client_secret=TWITTER_CONSUMER_SECRET,
    resource_owner_key=TWITTER_ACCESS_TOKEN,
    resource_owner_secret=TWITTER_ACCESS_TOKEN_SECRET
)


def find_tweets_using_tco(tco_url):
    """
    Given a shortened t.co URL, return a set of URLs for tweets that use this URL.
    """
    # See https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets.html
    resp = sess.get(
        "https://api.twitter.com/1.1/search/tweets.json",
        params={
            "q": tco_url,
            "count": 100,
            "include_entities": True
        }
    )

    statuses = resp.json()["statuses"]

    tweet_urls = set()

    for status in statuses:
        # A retweet shows up as a new status in the Twitter API, but we're only
        # interested in the original tweet.  If this is a retweet, look through
        # to the original.
        try:
            tweet = status["retweeted_status"]
        except KeyError:
            tweet = status

        # If this tweet shows up in the search results for a reason other than
        # "it has this t.co URL as a short link", it not interesting.
        if not any(u["url"] == tco_url for u in tweet["entities"]["urls"]):
            continue

        url = "https://twitter.com/%s/status/%s" % (
            tweet["user"]["screen_name"], tweet["id_str"]
        )

        tweet_urls.add(url)

    return tweet_urls

Ответ 5

Вот как вы можете найти оригинальный твит:

  1. Нажмите на ссылку t.co, чтобы найти исходный URL-адрес
  2. .Перейдите на https://twitter.com/explore (#)
  3. Скопируйте и вставьте ссылку в поле поиска "search twitter"
  4. Вы увидите твит со ссылкой

Ответ 6

Когда t.co forward указывает на твит, он переходит на веб-страницу для этого твита, а HTML для страницы будет содержать канонический URL-адрес.

Уродливым способом получить эту информацию является использование wget или curl для захвата адреса HTML, который будет содержать URL-адрес для вашего первоначального твита.

Лучший способ сделать это - с помощью модуля Python, Requests (сначала вам нужно будет установить этот модуль). Вот быстрый скрипт командной строки, который это сделает:

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

Этот код будет работать на любом из этих сервисов сокращения URL-адресов, а не на сайте Twitter t.co.

Я провел тестирование с Python 2.7, но, скорее всего, этот код будет работать с Python 3.x. В любом случае, Requests - ваш друг, см. Документацию для деталей:

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

В этом примере рассматривается раздел перенаправления и истории.

Я не знаю, как это сделать через API Twitter, и это может быть невозможно, если все URL-адреса сокращаются автоматически. Тем не менее, решение на основе API будет работать только с адресами t.co, тогда как вышеприведенный код будет работать с любым другим сокращенным URL-адресом или любым URL-адресом, который перенаправляет (например, HTTP-код 301 или 302) в другое место.

Изменить (лучше немного позже, чем никогда): после использования выше, чтобы найти, где на самом деле указывает t.co forward, будут три или четыре возможных результата. Наиболее распространенным явлением является то, что OP считает, что все они есть, сокращение URL-адреса, вставляемого в твит и, если быть справедливым, то, что большинство из них.

Другие возможности заключаются в том, что он привязывается к самому твиту, обычно это появляется только с довольно длинными твитами (не уверен, насколько увеличивается частота с увеличением лимита символов); а также переадресация URL-адреса статуса независимо от URL-адреса статуса автора твита, что часто происходит со встроенными медиа (изображениями и видео); плюс вперед к URL-адресу твита, который цитируется в твиттере или ретвите.

Учитывая исходный сценарий OP, ни один из этих внутренних сервисов Twitter не должен появляться, и здесь беспокоит только "нормальное" переадресация. Теперь поиск адреса t.co на twitter.com не дает нам ничего, независимо от того, какие комбинации используются.

Однако поиск целевого адреса, который раскрывается в сценариях, подобных тем, которые были в начале этого ответа, является совсем другим. Это даст результаты каждого твита, который является общедоступным и который разместил эту ссылку. Однако есть некоторые недостатки, в том числе:

  1. Результаты поиска будут включать твиты, в которых также использовались другие услуги переадресации.
  2. Невозможно определить, все ли твиты, связанные с этим URL, сгенерировали один и тот же адрес t.co или нет.
  3. Если нет, нет способа узнать, какой т. Вперед был использован с помощью твита.

Тем не менее, в сочетании с полными журналами рефереров на веб-сервере, это может быть еще более сузиться. Предполагая, что URL-адрес реферера сообщает URL-адрес твита, а не просто twitter.com. Это, однако, более вероятно, будет определяться тем, как человек, нажав на ссылку, сделал это (т.е. Они просто увидели твит в потоке или расширили его, чтобы отобразить полный URL-адрес).

Я подозреваю, что эффективность журналов рефереров будет спорадической и, скорее всего, снижается на смартфонах и планшетах, где приложения, использующие менее склонны к расширению твитов таким образом, чтобы затем предоставлять эти данные сторонним веб-сайтам.

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

Это, однако, так же хорошо, как и... без оплаты Twitter за расширенный доступ к данным.