<!DOCTYPE html>
    <html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
    <head>
<title>Cách tạo trình rút ngắn URL bằng Python và Bitly</title>
<meta name="description" content="Cách tạo trình rút ngắn URL bằng Python và Bitly - Savefile - Tin Tức -...">
<meta name="author" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :.">
<meta name="copyright" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :. [admin@nguoicodonvn2008.info]">
<meta name="robots" content="index, archive, follow, noodp">
<meta name="googlebot" content="index,archive,follow,noodp">
<meta name="msnbot" content="all,index,follow">
<meta name="generator" content="NukeViet v4.5">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="Cách tạo trình rút ngắn URL bằng Python và Bitly">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;cach-tao-trinh-rut-ngan-url-bang-python-va-bitly-6845.html">
<meta property="og:site_name" content=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.">
<meta property="og:url" content="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-tao-trinh-rut-ngan-url-bang-python-va-bitly-6845.html">
<link rel="shortcut icon" href="https://www.nguoicodonvn2008.info/favicon.ico">
<link rel="canonical" href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-tao-trinh-rut-ngan-url-bang-python-va-bitly-6845.html">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/karaoke-dual/" title="Tin Tức - Karaoke Dual" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/nhac-tre/" title="Tin Tức - Nhạc trẻ" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tru-tinh/" title="Tin Tức - Trữ tình" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/nuoc-ngoai/" title="Tin Tức - Nước ngoài" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/remix/" title="Tin Tức - Remix" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tam-su-tinh-yeu/" title="Tin Tức - Tâm sự tình yêu" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tho-suu-tam/" title="Tin Tức - Thơ sưu tầm" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/cuoc-song/" title="Tin Tức - Cuộc sống" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/phan-mem/" title="Tin Tức - Phần mềm" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/kien-thuc-may-tinh/" title="Tin Tức - Kiến thức máy tính" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/hoc-tap/" title="Tin Tức - Học tập" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tai-lieu/" title="Tin Tức - Tài liệu" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/de-thi/" title="Tin Tức - Đề thi" type="application/rss+xml">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/style.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/news.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/custom.css" type="text/css">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/bootstrap.min.js" type="text/javascript">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/assets/css/font-awesome.min.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/style.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/style.non-responsive.css">
<link rel="StyleSheet" href="https://www.nguoicodonvn2008.info/themes/default/css/news.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/custom.css">
<style type="text/css">
	body{background: #fff;}
</style>
    </head>
    <body>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">.&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.</h2>
		<p class="pull-right"><a title=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;." href="https://www.nguoicodonvn2008.info/">https://www.nguoicodonvn2008.info</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>Cách tạo trình rút ngắn URL bằng Python và Bitly</h1>
		<ul class="list-inline">
			<li>Chủ nhật - 05/03/2023 23:59</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
		</div>
				<div class="imghome">
			<img alt="Cách tạo trình rút ngắn URL bằng Python và Bitly" src="https://st.quantrimang.com/photos/image/2023/03/06/Python-API.jpg" width="460" class="img-thumbnail" />
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<p style="text-align: justify;"><strong>Rút gọn link giúp mang tới trải nghiệm lướt web dễ chịu hơn cho người dùng của bạn</strong>.&nbsp;<strong>Dịch vụ Bitly&nbsp;</strong>cũng có thể giúp bạn làm việc này.</p>

<p style="text-align: justify;"><img alt="Rút gọn link trong Python" data-i="0" data-src="https://st.quantrimang.com/photos/image/2023/03/06/Python-rut-gon-link-7.jpg" data-was-processed="true" height="340" src="https://st.quantrimang.com/photos/image/2023/03/06/Python-rut-gon-link-7.jpg" width="650" /></p>

<p style="text-align: justify;"><strong>Bitly</strong>&nbsp;là một dịch vụ cho phép bạn tạo các link rút gọn dẫn tới URL phức tạp và dài hơn. Những link rút gọn này dễ ghi nhớ, chia sẻ và theo dõi hơn URL dài ban đầu.</p>

<p style="text-align: justify;">Bạn có thể rút gọn URL trên web Bitly bằng tài khoản cá nhân. Bitly cũng cung cấp một API cho phép bạn rút gọn URL từ ứng dụng. Điều này hoạt động bằng cách gửi một truy vấn tới Bitly để rút gọn link. Bitly sẽ trả về link dẫn tới ứng dụng của bạn.</p>

<p style="text-align: justify;">Bạn có thể tích hợp Bitly API vào một script Python đơn giản.</p>

<h2 style="text-align: justify;">Cách tạo một token truy cập bằng tài khoản Bitly</h2>

<p style="text-align: justify;">Bạn cần một token truy cập để dùng Bitly API. Nếu chưa có tài khoản Bitly, hãy tạo mới để tạo một token truy cập mới.</p>

<p style="text-align: justify;">1. Từ bảng điều khiển hoặc trang chính của tài khoản Bitly, dùng menu bên cạnh để điều hướng tới trang&nbsp;<strong>Settings</strong>:</p>

<p style="text-align: justify;"><img alt="Cách tạo link rút gọn" data-i="1" data-src="https://st.quantrimang.com/photos/image/2023/03/06/cach-rut-gon-link-python1.jpg" data-was-processed="true" height="340" src="https://st.quantrimang.com/photos/image/2023/03/06/cach-rut-gon-link-python1.jpg" width="650" /></p>

<p style="text-align: justify;">2. Ở bên trái, trong&nbsp;<strong>Developer settings</strong>, click<strong>&nbsp;API</strong>:</p>

<p style="text-align: justify;"><img alt="API trong Python" data-i="2" data-src="https://st.quantrimang.com/photos/image/2023/03/06/Python-API.jpg" data-was-processed="true" height="342" src="https://st.quantrimang.com/photos/image/2023/03/06/Python-API.jpg" width="650" /></p>

<p style="text-align: justify;">3. Click&nbsp;<strong>Generate token</strong>.</p>

<p style="text-align: justify;">4. Bitly sẽ tạo một token truy cập mới. Lưu token để xem sau. Bạn có thể cần nhập lại mật khẩu để xem token.</p>

<p style="text-align: justify;"><img alt="Token Acess được tạo bằng Python" data-i="3" data-src="https://st.quantrimang.com/photos/image/2023/03/06/Python-access-token.jpg" data-was-processed="true" height="343" src="https://st.quantrimang.com/photos/image/2023/03/06/Python-access-token.jpg" width="650" /></p>

<h2 style="text-align: justify;">Cách yêu cầu một URL dài từ người dùng bằng tập lệnh Python</h2>

<p style="text-align: justify;">Giờ bạn có thể dùng token truy cập trong một tập lệnh Python. Bạn có thể tìm hiểu chi tiết về&nbsp;cách dùng Python&nbsp;trên Quantrimang.com.</p>

<p style="text-align: justify;">Trước khi dùng API, người dùng cần nhập URL muốn rút gọn. Bạn có thể dùng các đối số dòng lệnh để nhập link vào tập lênh Python.</p>

<p style="text-align: justify;">1. Tạo một tập lệnh Python mang tên<strong>&nbsp;shortURL.py</strong>&nbsp;và thêm các<strong>&nbsp;import&nbsp;</strong>sau vào đầu file. Chúng sẽ cho phép bạn dùng truy vấn API và chức năng phản hồi trong file Python. Bạn có thể dùng mô đun&nbsp;<strong>sys</strong>&nbsp;để chấp nhận các đối số dòng lệnh.</p>

<pre id="pre0" style="text-align: justify;">
import requests
import json
import time
import sys</pre>

<p style="text-align: justify;">2. Khi chạy tập lệnh Python, bạn có thể nhập URL muốn rút gọn trực tiếp vào dòng lệnh, chẳng hạn như:</p>

<pre id="pre1" style="text-align: justify;">
python shortURL.py https://www.example.com/a/made/up/url</pre>

<p style="text-align: justify;">Để lệnh trên hoạt động, dùng mô đun sys để lấy một danh sách các đối số dòng lệnh:</p>

<pre id="pre2" style="text-align: justify;">
commandLineArgs = sys.argv</pre>

<p style="text-align: justify;">3. Kiểm tra xem liệu có bất kỳ đối số dòng lệnh nào hay không. Nếu có, lưu link trong một biến. Nếu không, print một thông báo cho người dùng biết rằng cần chạy lại lệnh bằng URL đã nhập dưới dạng đối số dòng lệnh:</p>

<pre id="pre3" style="text-align: justify;">
if len(commandLineArgs) &gt; 1:
  url = commandLineArgs&#91;1&#93;
else:
  print(&#039;Please enter the URL you want to shorten as a command line argument&#039;)
  sys.exit()</pre>

<p style="text-align: justify;">4. Print một thông báo cập nhật trạng thái cho người dùng:</p>

<pre id="pre4" style="text-align: justify;">
print(&#039;Generating shortened URL...&#039;)</pre>

<h2 style="text-align: justify;">Cách dùng Bitly API để rút gọn URL</h2>

<p style="text-align: justify;">Sau khi có URL trong tập lệnh Python, dùng API để gửi yêu cầu tới Bitly để rút gọn URL.</p>

<p style="text-align: justify;">1. Lưu trữ token truy cập mà bạn đã tạo từ Bitly ở các bước trước đó:</p>

<pre id="pre5" style="text-align: justify;">
access_token = &#039;YOUR ACCESS TOKEN&#039;</pre>

<p style="text-align: justify;">2. Lưu trữ endpoint Bitly được dùng cho URL được rút gọn:</p>

<pre id="pre6" style="text-align: justify;">
endpoint = &#039;https://api-ssl.bitly.com/v4/shorten&#039; </pre>

<p style="text-align: justify;">3. Tạo header API mà bạn sẽ bao gồm trong truy vấn. Điều này xác minh quyền truy cập của bạn tới API bằng token access:</p>

<pre id="pre7" style="text-align: justify;">
headers = {
  &#039;Authorization&#039;: f&#039;Bearer {access_token}&#039;,
  &#039;Content-Type&#039;: &#039;application/json&#039;,
} 
</pre>

<p style="text-align: justify;">4. Một truy vấn có thể thất bại vì nhiều lí do, bao gồm lỗi mạng hoặc server. Dùng một bộ đếm retry sẽ gửi lại truy vấn nếu nó thất bại 3 lần:</p>

<pre id="pre8" style="text-align: justify;">
max_retries = 3
retry_count = 0

while retry_count &lt; max_retries:
  # Send request
else:
  print(&#039;URL shortening was not successful.&#039;)
</pre>

<p style="text-align: justify;">5. Bên trọng vòng lặp while, gửi truy vấn bao gồm URL dài và lưu phản hồi đó:</p>

<pre id="pre9" style="text-align: justify;">
data = {
  &#039;long_url&#039;: url,
}

response = requests.post(endpoint, headers=headers, data=json.dumps(data)) </pre>

<p style="text-align: justify;">6. Kiểm tra xem phẩn hồi đó có thành công hay không. Nếu có, phản hồi sẽ bao gồm một số dữ liệu. Bên trong dữ liệu sẽ là giá trị chuỗi của URL được rút gọn. Print nó tới người dùng và thoát chương trình:</p>

<pre id="pre10" style="text-align: justify;">
if response.status_code == 200:
  shortened_url = json.loads(response.content)&#91;&#039;link&#039;&#93;
  print(f&#039;Shortened URL: {shortened_url}&#039;)
  break</pre>

<p style="text-align: justify;">7. Nếu phản hồi không thành công, tăng bộ đếm retry và đợi một lúc trước khi thử lại:</p>

<pre id="pre11" style="text-align: justify;">
else:
  retry_count += 1

  if retry_count &lt; max_retries:
    time.sleep(5)</pre>

<h2 style="text-align: justify;">Cách kiểm tra URL mới trong trình duyệt</h2>

<p style="text-align: justify;">Chạy tập lệnh Python ở dòng lệnh để tạo một liên kết được rút gọn mới. Bạn có thể vào link này ở trình duyệt web và nó sẽ điều hướng tới link gốc, dài hơn.</p>

<p style="text-align: justify;">1. Trong một dòng lệnh hoặc terminal, điều hướng tới thư mục nơi bạn đã lưu trữ tập lệnh Python. Nếu đã lưu trữ nó trên desktop Windows, lệnh của bạn sẽ trông tương tự như sau:</p>

<pre id="pre12" style="text-align: justify;">
cd C:\Users\Sharl\Desktop</pre>

<p style="text-align: justify;">2. Cài đặt mô đun request để tập lệnh Python có thể nhận diện nó:</p>

<pre id="pre13" style="text-align: justify;">
pip install requests</pre>

<p style="text-align: justify;">3. Chạy tập lệnh Python bằng lệnh python. Sau tên file, nhập link dài làm đối số dòng lệnh:</p>

<pre id="pre14" style="text-align: justify;">
python shortURL.py https://quantrimang.com/cong-nghe/top-game-mobile-ra-mat-trong-thang-195727</pre>

<p style="text-align: justify;">4. Đợi quá trình tạo link được rút gọn hoàn tất:</p>

<p style="text-align: justify;">5. Sao chép link và nhập nó vào trình duyệt. Link ngắn này sẵ điều hướng tới link dài hơn mà bạn đã nhập trước đó:</p>

<p style="text-align: justify;">Giờ bạn đã hiểu<strong>&nbsp;cách rút gọn link trong Python</strong>&nbsp;để có những liên kết dễ ghi nhơ shown. Bạn có thể dùng tập lệnh để rút gọn bất kỳ link dài trước khi chia sẻ nó với người khác.</p>

<p style="text-align: justify;">Hi vọng bài viết hữu ích với các bạn!</p>
		</div>
				<div id="author">
						<p>
				<strong>Nguồn tin:</strong>
				Quantrimang.com
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-tao-trinh-rut-ngan-url-bang-python-va-bitly-6845.html" title="Cách tạo trình rút ngắn URL bằng Python và Bitly">https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-tao-trinh-rut-ngan-url-bang-python-va-bitly-6845.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; .&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.
		</div>
		<div id="contact">
			<a href="mailto:admin@nguoicodonvn2008.info">admin@nguoicodonvn2008.info</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://www.nguoicodonvn2008.info/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
		</script>
		<div class="car-top">
  <span><img src="https://www.nguoicodonvn2008.info/themes/default/images/car.png" alt=""></span>
</div>
<script src="https://www.nguoicodonvn2008.info/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4c_e856T",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=0,nv_recaptcha_ver=2,nv_recaptcha_sitekey="",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://www.nguoicodonvn2008.info/assets/js/language/vi.js"></script>
<script src="https://www.nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js"></script>
<script src="https://www.nguoicodonvn2008.info/assets/js/global.js"></script>
<script src="https://www.nguoicodonvn2008.info/assets/js/site.js"></script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/news.js"></script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/main.js"></script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/custom.js"></script>
<script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "Organization",
            "url": "https://www.nguoicodonvn2008.info",
            "logo": "https://www.nguoicodonvn2008.info/uploads/angel.gif"
        }
        </script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/bootstrap.min.js"></script>
<script type="text/javascript">
var $scrolltop = $('.car-top');
$scrolltop.on('click', function () {
    $('html,body').animate({
        scrollTop: 0
    }, 800);
    $(this).addClass("car-run");
    setTimeout(function(){ $scrolltop.removeClass('car-run');}, 1000);
    return false;
});
$(window).on('scroll', function ()
{ 
    if($(window).scrollTop() >= 200)
    {
        $scrolltop.addClass("show");
        $scrolltop.addClass("car-down");
    }
    else
    {
       $scrolltop.removeClass("show");
       setTimeout(function(){ $scrolltop.removeClass('car-down');}, 300);
    }
});
</script>
</body>
</html>