如何在Python中制作URL缩短器?代码实现示例

2021年11月16日21:14:06 发表评论 843 次浏览

Python如何制作URL缩短器?本文带你了解如何使用 Bitly 和 Cuttly API 使用 Python 中的请求库以编程方式缩短长 URL,包括一些Python制作URL缩短器示例

如何在Python中制作URL缩短器?一个URL缩短器是一个工具,需要很长的URL,并把它变成一个短重定向到目标页面。URL 缩短器在许多情况下被证明是有用的,例如跟踪点击次数或要求用户只输入少量字符,因为长 URL 难以记忆。

在本教程中,我们将使用BitlyCuttly API 在 Python 中自动缩短 URL。

我们不会在本教程中使用任何 API 包装器,因此,为了方便起见,我们需要请求库,让我们安装它:

pip3 install requests

Bitly API

Python如何制作URL缩短器?使用 Bitly API。首先,你需要注册一个新帐户,它是免费的,如果你已经拥有一个,那么只需使用它。

创建 Bitly 帐户后,我们需要获取我们的帐户 ID,以便我们可以访问 API。继续并单击你右上角的个人资料,然后单击帐户设置:

如何在Python中制作URL缩短器?代码实现示例

之后,获取我们在代码中需要的帐户名称,如下图所示:

如何在Python中制作URL缩短器?代码实现示例

好的,这就是我们所需要的,让我们现在开始编码:

import requests

# account credentials
username = "o_3v0ulxxxxx"
password = "your_password_here"

Python制作URL缩短器示例:这username是我刚刚向你展示如何获取它的帐户名称,password是你的 Bitly 帐户的实际密码,因此你应该将它们替换为你的凭据。

如果你仔细阅读Bitly API 文档,你会发现我们需要一个访问令牌才能进行 API 调用以获取缩短的 URL,因此让我们创建一个新的访问令牌:

# get the access token
auth_res = requests.post("https://api-ssl.bitly.com/oauth/access_token", auth=(username, password))
if auth_res.status_code == 200:
    # if response is OK, get the access token
    access_token = auth_res.content.decode()
    print("[!] Got access token:", access_token)
else:
    print("[!] Cannot get access token, exiting...")
    exit()

如何在Python中制作URL缩短器?我们使用requests.post()方法向/oauth/access_token端点发出 POST 请求并获取我们的访问令牌。我们传递了auth参数以将我们的帐户凭据添加到请求标头中。

现在我们有了访问令牌,在我们深入研究缩短 URL 之前,我们首先需要获取与我们的 Bitly 帐户关联的组 UID:

# construct the request headers with authorization
headers = {"Authorization": f"Bearer {access_token}"}

# get the group UID associated with our account
groups_res = requests.get("https://api-ssl.bitly.com/v4/groups", headers=headers)
if groups_res.status_code == 200:
    # if response is OK, get the GUID
    groups_data = groups_res.json()['groups'][0]
    guid = groups_data['guid']
else:
    print("[!] Cannot get GUID, exiting...")
    exit()

现在我们有了guid,让我们请求缩短示例 URL:

# the URL you want to shorten
url = "https://www.xyz.com/topic/using-apis-in-python"
# make the POST request to get shortened URL for `url`
shorten_res = requests.post("https://api-ssl.bitly.com/v4/shorten", json={"group_guid": guid, "long_url": url}, headers=headers)
if shorten_res.status_code == 200:
    # if response is OK, get the shortened URL
    link = shorten_res.json().get("link")
    print("Shortened URL:", link)

我们正在向/v4/shorten端点发送一个 POST 请求以缩短我们的url,我们传递了group_guid我们帐户的 ,url我们想要缩短作为请求的正文。

我们使用json参数而不是datainrequests.post()方法将我们的 Python 字典自动编码为JSON 格式并使用Content-Typeas发送application/json,然后我们添加了标头以包含我们之前获取的授权令牌,这是我的输出:

Shortened URL: https://bit.ly/32dtJ00

太好了,我们已经成功地使用 Bitly 缩短了我们的 URL!这是他们的官方文档

Cuttly API

另一种选择是使用 Cuttly API,创建一个新帐户并使用它的 API非常容易。注册帐户后,转到“你的帐户”并单击“编辑帐户”:

如何在Python中制作URL缩短器?代码实现示例

之后,你将看到你的帐户详细信息,继续并单击“更改 API 密钥”以获取新的 API 密钥(以便我们可以发出 API 请求):

如何在Python中制作URL缩短器?代码实现示例

Python制作URL缩短器示例 - 要使用 Cuttly 缩短你的 URL,非常简单:

import requests

api_key = "64d1303e4ba02f1ebba4699bc871413f0510a"
# the URL you want to shorten
url = "https://www.xyz.com/topic/using-apis-in-python"
# preferred name in the URL
api_url = f"https://cutt.ly/api/api.php?key={api_key}&short={url}"
# or
# api_url = f"https://cutt.ly/api/api.php?key={api_key}&short={url}&name=some_unique_name"
# make the request
data = requests.get(api_url).json()["url"]
if data["status"] == 7:
    # OK, get shortened URL
    shortened_url = data["shortLink"]
    print("Shortened URL:", shortened_url)
else:
    print("[!] Error Shortening URL:", data)

Python如何制作URL缩短器?只需替换你的 API 密钥api_key和你想要缩短的 URL,你就可以开始了,这是我的输出:

Shortened URL: https://cutt.ly/mpAOd1b

请注意,你可以指定一个唯一的名称,结果将类似于:https://cutt.ly/some_unique_name,你可以通过简单地向nameURL 中的 GET 请求添加参数来实现这一点。

阅读有关Cuttly 文档的更多信息

结论

如何在Python中制作URL缩短器?通过以上的具体示例,现在你知道如何使用 Bitly 和 Cuttly 缩短器来缩短 URL!请注意,这些提供程序提供了更多用于获取点击次数、统计信息等的端点,你应该查看他们的文档以获取更多详细信息。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: