
Rajinder Singh
Deep Learning Researcher
curl_cffi adalah sebuah library Python yang menyediakan binding yang efisien dan low-level ke library libcurl menggunakan CFFI (C Foreign Function Interface). Ini memungkinkan Anda untuk melakukan permintaan HTTP dengan performa tinggi dan kontrol yang detail, mirip dengan tool baris perintah curl tetapi di dalam Python. Ini sangat berguna untuk tugas-tugas web scraping yang membutuhkan kecepatan dan konfigurasi tingkat lanjut.
Fitur:
libcurl untuk permintaan HTTP yang cepat.Sebelum Anda mulai menggunakan curl_cffi, pastikan Anda telah menginstal hal-hal berikut:
Pada sistem Ubuntu/Debian, Anda mungkin perlu menginstal header pengembangan libcurl:
sudo apt-get install libcurl4-openssl-dev
Instal curl_cffi menggunakan pip:
pip install curl_cffi
Berikut adalah contoh dasar cara menggunakan curl_cffi untuk melakukan permintaan GET:
from curl_cffi import requests
# Melakukan permintaan GET
response = requests.get('https://httpbin.org/get')
# Memeriksa kode status
print(f'Kode Status: {response.status_code}')
# Mencetak isi respons
print('Isi Respons:', response.text)
Mari kita scraping halaman web untuk mengekstrak informasi. Kita akan menggunakan Quotes to Scrape untuk mendapatkan semua kutipan beserta penulisnya.
from curl_cffi import requests
from bs4 import BeautifulSoup
# URL untuk scraping
url = 'http://quotes.toscrape.com/'
# Melakukan permintaan GET
response = requests.get(url)
# Menganalisis konten HTML menggunakan BeautifulSoup
soup = BeautifulSoup(response.content, 'html.parser')
# Menemukan semua elemen kutipan
quotes = soup.find_all('div', class_='quote')
# Mengekstrak dan menampilkan kutipan dan penulis
for quote in quotes:
text = quote.find('span', class_='text').get_text()
author = quote.find('small', class_='author').get_text()
print(f'{text} — {author}')
Output:
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” — Albert Einstein
“It is our choices, Harry, that show what we truly are, far more than our abilities.” — J.K. Rowling
... (kutipan tambahan)
Di bagian ini, kita akan mengeksplorasi bagaimana mengintegrasikan CapSolver dengan curl_cffi untuk melewati captcha. CapSolver adalah layanan eksternal yang membantu dalam menyelesaikan berbagai jenis captcha, termasuk ReCaptcha V2, yang umum digunakan di situs web.
Kita akan mendemonstrasikan penyelesaian ReCaptcha V2 menggunakan CapSolver dan kemudian scraping konten halaman yang memerlukan penyelesaian captcha terlebih dahulu.
import os
import capsolver
from curl_cffi import requests
# Pertimbangkan untuk menggunakan variabel lingkungan untuk informasi sensitif
capsolver.api_key = os.getenv("CAPSOLVER_API_KEY", "Your CapSolver API Key")
PAGE_URL = os.getenv("PAGE_URL", "https://example.com") # URL halaman dengan captcha
PAGE_KEY = os.getenv("PAGE_SITE_KEY", "SITE_KEY") # Site key untuk captcha
def solve_recaptcha_v2(url, site_key):
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": url,
"websiteKey": site_key,
"proxy": PROXY
})
return solution['solution']['gRecaptchaResponse']
def main():
print("Menyelesaikan reCaptcha V2...")
captcha_solution = solve_recaptcha_v2(PAGE_URL, PAGE_KEY)
print("Captcha Terselesaikan!")
if __name__ == "__main__":
main()
Catatan: Ganti PAGE_URL dengan URL halaman yang berisi captcha dan PAGE_SITE_KEY dengan site key captcha. Anda dapat menemukan site key di sumber HTML halaman, biasanya di dalam <div> yang berisi widget captcha.
Jika Anda perlu merutekan permintaan Anda melalui proxy, curl_cffi membuatnya mudah:
from curl_cffi import requests
# Menentukan pengaturan proxy
proxies = {
'http': 'http://username:password@proxyserver:port',
'https': 'https://username:password@proxyserver:port',
}
# Melakukan permintaan GET menggunakan proxy
response = requests.get('https://httpbin.org/ip', proxies=proxies)
# Mencetak isi respons
print('Isi Respons:', response.text)
Anda dapat mengelola cookie menggunakan CookieJar dari modul http.cookiejar Python:
from curl_cffi import requests
from http.cookiejar import CookieJar
# Membuat instance CookieJar
cookie_jar = CookieJar()
# Membuat sesi dengan cookie jar
session = requests.Session()
session.cookies = cookie_jar
# Melakukan permintaan GET
response = session.get('https://httpbin.org/cookies/set?name=value')
# Menampilkan cookie
for cookie in session.cookies:
print(f'{cookie.name}: {cookie.value}')
Anda dapat mengirim header kustom dan melakukan permintaan POST dengan curl_cffi:
from curl_cffi import requests
# Menentukan header kustom
headers = {
'User-Agent': 'Mozilla/5.0 (compatible)',
'Accept-Language': 'en-US,en;q=0.5',
}
# Data untuk dikirim dalam permintaan POST
data = {
'username': 'testuser',
'password': 'testpass',
}
# Melakukan permintaan POST
response = requests.post('https://httpbin.org/post', headers=headers, data=data)
# Mencetak respons JSON
print('Respons JSON:', response.json())
Klaim Kode Bonus Anda untuk solusi captcha terbaik di CapSolver: scrape. Setelah menukarkannya, Anda akan mendapatkan bonus tambahan 5% setelah setiap pengisian ulang, tanpa batas.

Dengan curl_cffi, Anda dapat secara efisien melakukan tugas web scraping sambil memiliki kontrol detail atas permintaan HTTP Anda. Integrasinya dengan CapSolver memungkinkan Anda untuk melewati captcha seperti ReCaptcha V2, memungkinkan akses ke konten yang sulit untuk di-scrape.
Jangan ragu untuk mengembangkan contoh-contoh ini agar sesuai dengan kebutuhan scraping khusus Anda. Selalu ingat untuk menghormati persyaratan layanan situs web yang Anda scrape dan mematuhi pedoman hukum.
Selamat scraping!
Pelajari apa yang memicu Kesalahan Cloudflare 1020 Akses Ditolak, bagaimana Firewall Aplikasi Web dan deteksi bot bekerja, dan bagaimana pengembang dapat mengurangi kesalahan positif dalam alur kerja otomatis yang sah.

Pelajari cara menggunakan template CapSolver n8n untuk memantau halaman produk yang dilindungi oleh AWS WAF, menyelesaikan tantangan, mengekstrak harga, membandingkan perubahan, dan memicu notifikasi secara otomatis.
