Python如何制作URL缩短器?本文带你了解如何使用 Bitly 和 Cuttly API 使用 Python 中的请求库以编程方式缩短长 URL,包括一些Python制作URL缩短器示例。
如何在Python中制作URL缩短器?一个URL缩短器是一个工具,需要很长的URL,并把它变成一个短重定向到目标页面。URL 缩短器在许多情况下被证明是有用的,例如跟踪点击次数或要求用户只输入少量字符,因为长 URL 难以记忆。
在本教程中,我们将使用Bitly和Cuttly API 在 Python 中自动缩短 URL。
我们不会在本教程中使用任何 API 包装器,因此,为了方便起见,我们需要请求库,让我们安装它:
pip3 install requests
Bitly API
Python如何制作URL缩短器?使用 Bitly API。首先,你需要注册一个新帐户,它是免费的,如果你已经拥有一个,那么只需使用它。
创建 Bitly 帐户后,我们需要获取我们的帐户 ID,以便我们可以访问 API。继续并单击你右上角的个人资料,然后单击帐户设置:
之后,获取我们在代码中需要的帐户名称,如下图所示:
好的,这就是我们所需要的,让我们现在开始编码:
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
参数而不是data
inrequests.post()
方法将我们的 Python 字典自动编码为JSON 格式并使用Content-Type
as发送application/json
,然后我们添加了标头以包含我们之前获取的授权令牌,这是我的输出:
Shortened URL: https://bit.ly/32dtJ00
太好了,我们已经成功地使用 Bitly 缩短了我们的 URL!这是他们的官方文档。
Cuttly API
另一种选择是使用 Cuttly API,创建一个新帐户并使用它的 API非常容易。注册帐户后,转到“你的帐户”并单击“编辑帐户”:
之后,你将看到你的帐户详细信息,继续并单击“更改 API 密钥”以获取新的 API 密钥(以便我们可以发出 API 请求):
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
,你可以通过简单地向name
URL 中的 GET 请求添加参数来实现这一点。
阅读有关Cuttly 文档的更多信息。
结论
如何在Python中制作URL缩短器?通过以上的具体示例,现在你知道如何使用 Bitly 和 Cuttly 缩短器来缩短 URL!请注意,这些提供程序提供了更多用于获取点击次数、统计信息等的端点,你应该查看他们的文档以获取更多详细信息。