CAPSOLVER
Blog
Cách giải reCAPTCHA bằng cách sử dụng Python và GO

Cách giải reCAPTCHA bằng cách sử dụng Python và GO

Logo of CapSolver

Anh Tuan

Data Science Expert

24-Nov-2025

reCAPTCHA, được phát triển bởi Google, là một biện pháp bảo mật được các trang web sử dụng rộng rãi để bảo vệ chống lại các bot tự động. Nó đưa ra các thử thách cho người dùng để xác minh danh tính của họ là con người. Trong bài viết này, chúng ta sẽ khám phá cách giải các thử thách reCAPTCHA một cách chương trình bằng Python và Go. Chúng ta sẽ bao quát cả reCAPTCHA v2 và v3, cung cấp cho bạn kiến thức và công cụ để vượt qua các biện pháp bảo mật này trong các dự án quét web của bạn.

reCAPTCHA là gì?

reCAPTCHA cung cấp bảo vệ mạnh mẽ cho các trang web, ngăn chặn hiệu quả các hoạt động gian lận và lạm dụng trong khi vẫn duy trì sự thuận tiện cho người dùng. Được hỗ trợ bởi một động cơ đánh giá rủi ro thông minh và các thử thách thích ứng, nó hiệu quả trong việc ngăn chặn phần mềm độc hại và đảm bảo truy cập trơn tru cho người dùng hợp lệ. Với hơn một thập kỷ kinh nghiệm, reCAPTCHA đang bảo vệ tính toàn vẹn của dữ liệu cho hàng trăm trang web. Cách tiếp cận liền mạch của nó dễ dàng nhận diện và chặn bot và các cuộc tấn công tự động, đồng thời vẫn cho phép người dùng thực sự di chuyển mà không bị gián đoạn. Dựa trên học máy liên tục, các thuật toán thích ứng của reCAPTCHA phân tích tương tác của người dùng và hành vi của bot, vượt qua giới hạn của các phương pháp phát hiện bot dựa trên thử thách truyền thống.

Có một số phiên bản reCAPTCHA:

reCAPTCHA, được phát triển bởi Google, có một số phiên bản, mỗi phiên bản được thiết kế để phân biệt giữa người dùng và bot theo những cách khác nhau:

  • reCAPTCHA v1: Phiên bản ban đầu yêu cầu người dùng giải mã văn bản bị biến dạng và nhập vào ô văn bản.
  • reCAPTCHA v2: Phiên bản này giới thiệu một hộp kiểm để người dùng xác nhận danh tính con người của họ. Đôi khi, nó cũng có thể yêu cầu người dùng chọn các hình ảnh cụ thể từ lưới.
  • reCAPTCHA v3: Khác với các phiên bản trước, phiên bản này hoạt động ở chế độ nền, phân tích hành vi người dùng để cấp một điểm số cho thấy khả năng hoạt động của người dùng hoặc bot. Nó mang lại trải nghiệm liền mạch, không yêu cầu tương tác trực tiếp từ người dùng.

Trong bài viết này, chúng ta sẽ tập trung vào việc giải reCAPTCHA V2 và V3. Các phiên bản này thường hiển thị một hộp kiểm với thông báo "Tôi không phải là bot" hoặc có thể xuất hiện dưới dạng một dấu hiệu vô hình, nhằm phân biệt người dùng thật với bot. Đây là cách nó hoạt động trong thực tế:

Giải pháp reCAPTCHA tốt nhất: Capsolver

CapSolver nổi bật là một trong những giải pháp giải reCAPTCHA hàng đầu trên thị trường. Với sự kết hợp giữa chi phí hợp lý, tốc độ nhanh và độ tin cậy cao, CapSolver sử dụng các thuật toán giải Captcha dựa trên AI, dẫn đến tốc độ giải nhanh hơn và chi phí giảm. Giải pháp tuyệt vời này đảm bảo trải nghiệm phát triển tốt cho việc xử lý các thử thách reCAPTCHA.

Tại sao nên chọn CapSolver?

Tiết kiệm chi phí và nhanh chóng:
CapSolver cung cấp giá cả cạnh tranh, khiến nó trở thành một trong những lựa chọn hiệu quả về chi phí nhất để giải reCAPTCHA. Với các thuật toán dựa trên AI, nó đạt tốc độ giải nhanh hơn, tiết kiệm thời gian quý báu.

Độ tin cậy cao:
CapSolver có tốc độ cập nhật nhanh nhất trong số các nhà cung cấp tương tự, đảm bảo bạn có quyền truy cập vào công nghệ giải Captcha mới nhất và chính xác nhất. Độ tin cậy này đảm bảo trải nghiệm giải nhanh mượt mà và không gián đoạn.

Giải pháp không rủi ro:
Với CapSolver, bạn chỉ trả tiền cho các Captcha được giải thành công. Quy trình đánh giá hợp tác nghiêm ngặt của họ đảm bảo rằng các hoạt động bất hợp pháp được phát hiện và cấm nhanh chóng, cung cấp nền tảng an toàn và đáng tin cậy để giải reCAPTCHA.

Tự động hóa dựa trên AI:
Capsolver tận dụng sức mạnh của trí tuệ nhân tạo để cung cấp giải pháp Captcha tự động hoàn toàn. Điều này loại bỏ nhu cầu can thiệp thủ công, làm cho quy trình giải nhanh trở nên hiệu quả hơn.

Tương thích với các dịch vụ phổ biến:
CapSolver hoạt động liền mạch với các API của các dịch vụ nhận dạng Captcha thủ công phổ biến, đảm bảo tương thích với nhiều nền tảng và hệ thống. Tính linh hoạt này cho phép tích hợp dễ dàng vào quy trình làm việc hiện có của bạn.

Giải pháp đa dạng:
Ngoài dịch vụ API, CapSolver còn cung cấp một tiện ích mở rộng Chrome, mở rộng khả năng và cung cấp nhiều lựa chọn hơn để giải reCAPTCHA. Tính linh hoạt này đáp ứng các sở thích và yêu cầu khác nhau của người dùng.

Được tin dùng bởi nhiều nền tảng:
Với hơn 1000+ nền tảng tích hợp API của CapSolver, nó đã giành được sự tin tưởng và lòng tin của nhiều doanh nghiệp và nhà phát triển. Việc áp dụng rộng rãi này chứng minh độ tin cậy và hiệu quả của giải pháp CapSolver.

Nhận mã khuyến mãi CapSolver

Đừng bỏ lỡ cơ hội tối ưu hóa quy trình của bạn! Sử dụng mã khuyến mãi CAPN khi nạp tiền vào tài khoản CapSolver và nhận thêm 5% khuyến mãi cho mỗi lần nạp, không giới hạn. Truy cập CapSolver để nhận mã khuyến mãi ngay hôm nay!

Cách Giải reCAPTCHA v3 - Hướng dẫn API

ReCaptchaV3Task

ReCaptchaV3Task là một loại nhiệm vụ yêu cầu bạn sử dụng proxy riêng. Nó lý tưởng cho những người có kho proxy đáng tin cậy. Việc sử dụng proxy cá nhân cho phép kiểm soát và tùy chỉnh quy trình giải nhanh hơn.

python Copy
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'

import capsolver
# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "ReCaptchaV3Task",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
    "proxy":"ip:port:user:pass", ...
})

ReCaptchaV3TaskProxyLess

Nếu bạn không có quyền truy cập vào proxy hoặc không muốn sử dụng chúng, ReCaptchaV3TaskProxyLess là lựa chọn lý tưởng. Nó sử dụng proxy tích hợp của máy chủ, làm cho quy trình trở nên liền mạch và thân thiện với người dùng hơn.

python Copy
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'

import capsolver

# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "ReCaptchaV3TaskProxyLess",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
    "proxy":"yourproxy"
})

Bước 1: Tạo một nhiệm vụ

Để bắt đầu quy trình, bạn cần tạo một nhiệm vụ nhận dạng bằng phương pháp createTask.

Dưới đây là một yêu cầu ví dụ:

json Copy
POST https://api.capsolver.com/createTask

{
  "clientKey":"yourapiKey",
  "task": {
    "type":"ReCaptchaV3Task",
    "websiteURL":"https://antcpt.com/score_detector",
    "websiteKey":"6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf",
    "pageAction": "homepage",
    "proxy":"yourproxy"
  }
}

Sau khi nhiệm vụ được gửi thành công, bạn sẽ nhận được một ID Nhiệm vụ trong phản hồi:

json Copy
{
  "errorId": 0,
  "errorCode": "",
  "errorDescription": "",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Bước 2: Nhận Kết quả

Khi bạn có ID Nhiệm vụ, bạn có thể sử dụng nó để nhận giải pháp. Gửi ID Nhiệm vụ với phương pháp getTaskResult. Kết quả sẽ sẵn sàng trong khoảng thời gian từ 1s đến 10s.

Dưới đây là một yêu cầu ví dụ:

json Copy
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json

{
  "clientKey":"YOUR_API_KEY",
  "taskId": "TASKID OF CREATETASK" //ID được tạo bởi phương pháp createTask
}

Phản hồi sẽ bao gồm token giải pháp:

json Copy
{
  "errorId": 0,
  "errorCode": null,
  "errorDescription": null,
  "solution": {
    "userAgent": "xxx",
    "expireTime": 1671615324290,
    "gRecaptchaResponse": "3AHJ....."
  },
  "status": "ready"
}

Trong phản hồi, 'solution' chứa 'userAgent', thời gian hết hạn của token 'expireTime', và token giải pháp 'gRecaptchaResponse'. Sau khi captcha được giải, bạn có thể kiểm tra token captcha bằng cách gửi token đến trang web, ví dụ:

json Copy
var request = require('request');

var options = {
  method: 'POST',
  url: 'https://antcpt.com/score_detector/verify.php',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ 'g-recaptcha-response': 'here the token of capsolver' }),
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Thêm thông tin về cách Giải reCAPTCHA v2, bạn có thể tham khảo Tài liệu

Cách Giải reCAPTCHA bằng Python và GO

Mã mẫu cho reCAPTCHA v2

python Copy
# pip install requests
import requests
import time

# TODO: thiết lập cấu hình của bạn
api_key = "YOUR_API_KEY"  # khóa API của bạn từ Capsolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"  # khóa trang của trang đích của bạn
site_url = "https://www.google.com/recaptcha/api2/demo"  # URL trang của trang đích của bạn


def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Không thể tạo nhiệm vụ:", res.text)
        return
    print(f"Đã nhận taskId: {task_id} / Đang nhận kết quả...")

    while True:
        time.sleep(3)  # độ trễ
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", {}).get('gRecaptchaResponse')
        if status == "failed" or resp.get("errorId"):
            print("Giải thất bại! phản hồi:", res.text)
            return


token = capsolver()
print(token)
go Copy
package main

import (
	"bytes"
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"net/http"
	"time"
)

type capSolverResponse struct {
	ErrorId          int32          `json:"errorId"`
	ErrorCode        string         `json:"errorCode"`
	ErrorDescription string         `json:"errorDescription"`
	TaskId           string         `json:"taskId"`
	Status           string         `json:"status"`
	Solution         map[string]any `json:"solution"`
}

func capSolver(ctx context.Context, apiKey string, taskData map[string]any) (*capSolverResponse, error) {
	uri := "https://api.capsolver.com/createTask"
	res, err := request(ctx, uri, map[string]any{
		"clientKey": apiKey,
		"task":      taskData,
	})
	if err != nil {
		return nil, err
	}
	if res.ErrorId == 1 {
		return nil, errors.New(res.ErrorDescription)
	}

	uri = "https://api.capsolver.com/getTaskResult"
	for {
		select {
		case <-ctx.Done():
			return res, errors.New("giải hết thời gian")
		case <-time.After(time.Second):
			break
		}
		res, err = request(ctx, uri, map[string]any{
			"clientKey": apiKey,
			"taskId":    res.TaskId,
		})
		if err != nil {
			return nil, err
		}
		if res.ErrorId == 1 {
			return nil, errors.New(res.ErrorDescription)
		}
		if res.Status == "ready" {
			return res, err
		}
	}
}

func request(ctx context.Context, uri string, payload interface{}) (*capSolverResponse, error) {
	payloadBytes, err := json.Marshal(payload)
	if err != nil {
		return nil, err
	}
	req, err := http.NewRequestWithContext(ctx, "POST", uri, bytes.NewReader(payloadBytes))
	if err != nil {
		return nil, err
	}
	req.Header.Set("Content-Type", "application/json")
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	responseData, err := io.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}
	capResponse := &capSolverResponse{}
	err = json.Unmarshal(responseData, capResponse)
	if err != nil {
		return nil, err
	}
	return capResponse, nil
}

func main() {
	apikey := "YOUR_API_KEY"
	ctx, cancel := context.WithTimeout(context.Background(), time.Second*120)
	defer cancel()

	res, err := capSolver(ctx, apikey, map[string]any{
		"type":       "ReCaptchaV2TaskProxyLess",
		"websiteURL": "https://www.google.com/recaptcha/api2/demo",
		"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
	})
	if err != nil {
		panic(err)
	}
	fmt.Println(res.Solution["gRecaptchaResponse"])
}

Mã mẫu cho reCAPTCHA v3

python Copy
# pip install requests
import requests
import time

# TODO: thiết lập cấu hình của bạn
api_key = "YOUR_API_KEY"  # khóa API của bạn từ Capsolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-"  # khóa trang của trang đích của bạn
site_url = "https://www.google.com"  # URL trang của trang đích của bạn


def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV3TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Không thể tạo nhiệm vụ:", res.text)
        return
    print(f"Đã nhận taskId: {task_id} / Đang nhận kết quả...")

    while True:
        time.sleep(1)  # độ trễ
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", {}).get('gRecaptchaResponse')
        if status == "failed" or resp.get("errorId"):
            print("Giải thất bại! phản hồi:", res.text)
            return


token = capsolver()
print(token)
go Copy
package main

import (
	"bytes"
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"net/http"
	"time"
)

type capSolverResponse struct {
	ErrorId          int32          `json:"errorId"`
	ErrorCode        string         `json:"errorCode"`
	ErrorDescription string         `json:"errorDescription"`
	TaskId           string         `json:"taskId"`
	Status           string         `json:"status"`
	Solution         map[string]any `json:"solution"`
}

func capSolver(ctx context.Context, apiKey string, taskData map[string]any) (*capSolverResponse, error) {
	uri := "https://api.capsolver.com/createTask"
	res, err := request(ctx, uri, map[string]any{
		"clientKey": apiKey,
		"task":      taskData,
	})
	if err != nil {
		return nil, err
	}
	if res.ErrorId == 1 {
		return nil, errors.New(res.ErrorDescription)
	}

	uri = "https://api.capsolver.com/getTaskResult"
	for {
		select {
		case <-ctx.Done():
			return res, errors.New("giải hết thời gian")
		case <-time.After(time.Second):
			break
		}
		res, err = request(ctx, uri, map[string]any{
			"clientKey": apiKey,
			"taskId":    res.TaskId,
		})
		if err != nil {
			return nil, err
		}
		if res.ErrorId == 1 {
			return nil, errors.New(res.ErrorDescription)
		}
		if res.Status == "ready" {
			return res, err
		}
	}
}

func request(ctx context.Context, uri string, payload interface{}) (*capSolverResponse, error) {
	payloadBytes, err := json.Marshal(payload)
	if err != nil {
		return nil, err
	}
	req, err := http.NewRequestWithContext(ctx, "POST", uri, bytes.NewReader(payloadBytes))
	if err != nil {
		return nil, err
	}
	req.Header.Set("Content-Type", "application/json")
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	responseData, err := io.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}
	capResponse := &capSolverResponse{}
	err = json.Unmarshal(responseData, capResponse)
	if err != nil {
		return nil, err
	}
	return capResponse, nil
}

func main() {
	apikey := "YOUR_API_KEY"
	ctx, cancel := context.WithTimeout(context.Background(), time.Second*120)
	defer cancel()

	res, err := capSolver(ctx, apikey, map[string]any{
		"type":       "ReCaptchaV3TaskProxyLess",
		"websiteURL": "https://www.google.com/recaptcha/api2/demo",
		"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
	})
	if err != nil {
		panic(err)
	}
	fmt.Println(res.Solution["gRecaptchaResponse"])
}

}
res, err = request(ctx, uri, map[string]any{
"clientKey": apiKey,
"taskId": res.TaskId,
})
if err != nil {
return nil, err
}
if res.ErrorId == 1 {
return nil, errors.New(res.ErrorDescription)
}
if res.Status == "ready" {
return res, err
}
}
}

func request(ctx context.Context, uri string, payload interface{}) (*capSolverResponse, error) {
payloadBytes, err := json.Marshal(payload)
if err != nil {
return nil, err
}
req, err := http.NewRequestWithContext(ctx, "POST", uri, bytes.NewReader(payloadBytes))
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
responseData, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
capResponse := &capSolverResponse{}
err = json.Unmarshal(responseData, capResponse)
if err != nil {
return nil, err
}
return capResponse, nil
}

func main() {
apikey := "KHÓA_API_CỦA_BẠN"
ctx, cancel := context.WithTimeout(context.Background(), time.Second*120)
defer cancel()

Copy
res, err := capSolver(ctx, apikey, map[string]any{
	"type":       "ReCaptchaV3TaskProxyLess",
	"websiteURL": "https://www.google.com",
	"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
})
if err != nil {
	panic(err)
}
fmt.Println(res.Solution["gRecaptchaResponse"])

}

Copy
  
## Kết luận
Giải quyết các thách thức reCAPTCHA một cách tự động bằng Python và Go, kết hợp với giải pháp [CapSolver](https://dashboard.capsolver.com/dashboard/overview/?utm_source=blog&utm_medium=article&utm_campaign=price-intelligence-captcha) mạnh mẽ, mang lại cách tiếp cận hiệu quả cho các nhiệm vụ quét web và tự động hóa. Bằng cách hiểu rõ các chi tiết của reCAPTCHA v2 và v3 và tận dụng khả năng của CapSolver, các nhà phát triển có thể vượt qua các biện pháp bảo mật này một cách hiệu quả và đáng tin cậy. Theo các hướng dẫn và ví dụ mã nguồn đầy đủ được cung cấp, bạn có thể tích hợp thành công CapSolver vào các ứng dụng Python và Go của mình để giải quyết các thách thức reCAPTCHA một cách liền mạch.

# **Câu hỏi thường gặp**

### **1. Bài viết này tập trung vào điều gì?**

Nó giải thích cách giải quyết reCAPTCHA v2 và v3 một cách tự động bằng Python và Go, bao gồm quy trình API hoàn chỉnh và mã mẫu.

### **2. Bài viết này dành cho ai?**

Các nhà phát triển làm việc trên các nhiệm vụ quét web, tự động hóa, công cụ SEO, hệ thống giám sát, hoặc bất kỳ quy trình nào gặp phải các thách thức reCAPTCHA.

### **3. Các phiên bản reCAPTCHA nào được hỗ trợ?**

reCAPTCHA v2 (checkbox và không hiển thị) và reCAPTCHA v3 (dựa trên điểm số).

### **4. Tôi cần gì để bắt đầu?**

* Sitekey của trang web mục tiêu
* URL trang web
* Khóa API của CapSolver
* Tùy chọn: proxy (cho các loại nhiệm vụ không cần proxy)

### **5. Tôi có thể sử dụng các mẫu mã code trực tiếp không?**

Có. Thay thế khóa API, sitekey và URL trang đích, mã sẽ chạy như được cung cấp.

### **6. Thời gian giải quyết thường mất bao lâu?**

Thông thường từ 1–10 giây tùy thuộc vào độ khó của captcha và môi trường.

### **7. Làm thế nào để xác minh rằng token trả về hoạt động?**

Gửi `gRecaptchaResponse` đến điểm cuối xác minh của trang web (các ví dụ được cung cấp trong bài viết).

### **8. Có hỗ trợ ProxyLess không?**

Có, cả reCAPTCHA v2 và v3 đều có loại nhiệm vụ ProxyLess, lý tưởng cho người dùng không có proxy.

### **9. Nó đảm bảo điểm số cao trên reCAPTCHA v3 không?**

Nó cung cấp mô phỏng môi trường chất lượng cao, nhưng điểm số cuối cùng phụ thuộc vào đánh giá rủi ro của Google.

### **10. Tôi có thể sử dụng điều này trong các dự án quy mô lớn hoặc thương mại không?**

Có. API này phù hợp cho quét web khối lượng lớn, các luồng tự động hóa và hệ thống có thể mở rộng.

Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.

Thêm