CAPSOLVER
Blog
Cara Menggunakan curl_cffi untuk Web Scraping

Cara Menggunakan curl_cffi untuk Web Scraping

Logo of CapSolver

Rajinder Singh

Deep Learning Researcher

17-Sep-2024

Apa itu curl_cffi?

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:

  • Performa Tinggi: Memanfaatkan kecepatan libcurl untuk permintaan HTTP yang cepat.
  • Keamanan Thread: Aman digunakan dalam aplikasi multi-threaded.
  • Fitur Lanjutan: Mendukung proxy, konfigurasi SSL/TLS, header kustom, dan banyak lagi.
  • Kontrol Low-Level: Memberikan kontrol detail atas proses permintaan dan respons.

Prasyarat

Sebelum Anda mulai menggunakan curl_cffi, pastikan Anda telah menginstal hal-hal berikut:

Pada sistem Ubuntu/Debian, Anda mungkin perlu menginstal header pengembangan libcurl:

bash Copy
sudo apt-get install libcurl4-openssl-dev

Memulai dengan curl_cffi

Instalasi

Instal curl_cffi menggunakan pip:

bash Copy
pip install curl_cffi

Contoh Dasar: Melakukan Permintaan GET

Berikut adalah contoh dasar cara menggunakan curl_cffi untuk melakukan permintaan GET:

python Copy
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)

Contoh Web Scraping: Mengikis Kutipan dari Situs Web

Mari kita scraping halaman web untuk mengekstrak informasi. Kita akan menggunakan Quotes to Scrape untuk mendapatkan semua kutipan beserta penulisnya.

python Copy
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:

Copy
“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)

Menangani Captcha dengan CapSolver dan curl_cffi

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.

Contoh: Menyelesaikan ReCaptcha V2 dengan CapSolver dan curl_cffi

python Copy
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.

Menangani Proxy dengan curl_cffi

Jika Anda perlu merutekan permintaan Anda melalui proxy, curl_cffi membuatnya mudah:

python Copy
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:

python Copy
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}')

Penggunaan Lanjutan: Header Kustom dan Permintaan POST

Anda dapat mengirim header kustom dan melakukan permintaan POST dengan curl_cffi:

python Copy
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())

Kode Bonus

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.

Kesimpulan

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!

Pernyataan Kepatuhan: Informasi yang diberikan di blog ini hanya untuk tujuan informasi. CapSolver berkomitmen untuk mematuhi semua hukum dan peraturan yang berlaku. Penggunaan jaringan CapSolver untuk kegiatan ilegal, penipuan, atau penyalahgunaan sangat dilarang dan akan diselidiki. Solusi penyelesaian captcha kami meningkatkan pengalaman pengguna sambil memastikan kepatuhan 100% dalam membantu menyelesaikan kesulitan captcha selama pengambilan data publik. Kami mendorong penggunaan layanan kami secara bertanggung jawab. Untuk informasi lebih lanjut, silakan kunjungi Syarat Layanan dan Kebijakan Privasi.

Lebih lanjut