Μετατροπή curl σε C

Το curl2code μετατρέπει εντολές curl σε κώδικα C χρησιμοποιώντας τη libcurl. Η μετατροπή εκτελείται στο πρόγραμμα περιήγησής σας μέσω WebAssembly για πλήρη ιδιωτικότητα. Για Rust, δείτε τον μετατροπέα curl σε Rust. Για Go, δείτε το curl σε Go. Παρακάτω υπάρχουν πρακτικά παραδείγματα C με σωστή διαχείριση μνήμης.

Πώς να αντιγράψετε το curl από το πρόγραμμα περιήγησής σας

  1. 1

    Ανοίξτε τα DevTools

    Πατήστε F12 ή Ctrl+Shift+I για να ανοίξετε τα εργαλεία προγραμματιστή του προγράμματος περιήγησης.

  2. 2

    Μεταβείτε στην καρτέλα Network

    Κάντε κλικ στην καρτέλα Network και εκτελέστε την ενέργεια που ενεργοποιεί το αίτημα HTTP.

  3. 3

    Αντιγραφή ως cURL

    Κάντε δεξί κλικ στο αίτημα → CopyCopy as cURL. Στη συνέχεια, επικολλήστε το παραπάνω.

Συχνές Ερωτήσεις

Τι είναι το libcurl;

Το libcurl είναι η βιβλιοθήκη C πίσω από το εργαλείο γραμμής εντολών curl. Είναι η πιο φορητή και ευρέως διαδεδομένη βιβλιοθήκη HTTP client που υπάρχει, υποστηρίζοντας πάνω από 25 πρωτόκολλα. Χρησιμοποιείται από χιλιάδες εφαρμογές και ενσωματωμένα συστήματα. Προσθέστε το με τον διαχειριστή πακέτων του συστήματός σας ή συνδέστε το στατικά. Το curl2code δημιουργεί κώδικα libcurl C χρησιμοποιώντας το easy interface.

libcurl easy vs multi interface — ποιο να χρησιμοποιήσω;

Το easy interface (curl_easy_*) είναι για μεμονωμένες σύγχρονες μεταφορές — απλό και άμεσο. Το multi interface (curl_multi_*) επιτρέπει μη-μπλοκαρισμένες ταυτόχρονες μεταφορές σε ένα μόνο thread. Χρησιμοποιήστε το easy για scripts και απλά εργαλεία, και το multi για εφαρμογές υψηλής απόδοσης. Για μια γλώσσα της οικογένειας C υψηλότερου επιπέδου, δείτε το curl σε Rust.

Πώς γίνεται ο χειρισμός του authentication με το libcurl;

Για Bearer: ορίστε μια προσαρμοσμένη κεφαλίδα με curl_slist_append(headers, "Authorization: Bearer token"). Για Basic auth: curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass"). Το libcurl κωδικοποιεί αυτόματα τα διαπιστευτήρια Basic auth. Το curl2code μετατρέπει τα flags -u και τις κεφαλίδες στις σωστές κλήσεις του C API.

Πώς στέλνω multipart form data με το libcurl;

Χρησιμοποιήστε το MIME API (libcurl 7.56+): curl_mime_init() για να δημιουργήσετε μια δομή mime, curl_mime_addpart() για κάθε πεδίο, curl_mime_name() και curl_mime_filedata() για μεταφορτώσεις αρχείων. Ορίστε το με CURLOPT_MIMEPOST. Απελευθερώστε με curl_mime_free().

Πώς γίνεται ο χειρισμός σφαλμάτων με το libcurl;

Κάθε συνάρτηση curl_easy_* επιστρέφει έναν CURLcode — ελέγξτε τον έναντι του CURLE_OK. Χρησιμοποιήστε το curl_easy_strerror(code) για μηνύματα αναγνώσιμα από τον άνθρωπο. Ορίστε το CURLOPT_ERRORBUFFER για λεπτομερή strings σφαλμάτων. Λάβετε το HTTP status με το curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code).

Πώς γίνεται η διαχείριση μνήμης με το libcurl;

Πάντα να καλείτε το curl_easy_cleanup() όταν τελειώνετε με ένα handle. Ελευθερώστε τις λίστες κεφαλίδων με το curl_slist_free_all(). Ελευθερώστε τις δομές MIME με το curl_mime_free(). Για write callbacks, διαχειριστείτε τη δική σας δέσμευση buffer. Καλέστε το curl_global_cleanup() μία φορά κατά την έξοδο του προγράμματος. Η παράλειψη απελευθέρωσης πόρων προκαλεί διαρροές μνήμης.

Πώς ορίζονται τα timeouts με το libcurl;

Ορίστε το CURLOPT_CONNECTTIMEOUT για το timeout σύνδεσης και το CURLOPT_TIMEOUT για τον συνολικό χρόνο μεταφοράς (και τα δύο σε δευτερόλεπτα). Για ακρίβεια χιλιοστών του δευτερολέπτου, χρησιμοποιήστε τα CURLOPT_CONNECTTIMEOUT_MS και CURLOPT_TIMEOUT_MS. Αυτές είναι οι ίδιες επιλογές που χρησιμοποιεί το curl CLI με τα --connect-timeout και --max-time.

Πώς ρυθμίζεται ένας proxy με το libcurl;

Ορίστε το CURLOPT_PROXY στο URL του proxy: curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:8080"). Για SOCKS5: ορίστε το CURLOPT_PROXYTYPE σε CURLPROXY_SOCKS5. Για proxy auth: CURLOPT_PROXYUSERPWD. Το libcurl σέβεται επίσης τη μεταβλητή περιβάλλοντος http_proxy.

Πώς να στείλετε ένα POST αίτημα με JSON σώμα στη C;

Μετατρέψτε μια curl POST εντολή όπως curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL σε C χρησιμοποιώντας το curl2code. Ο παραγόμενος κώδικας χρησιμοποιεί curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string). Το curl2code εντοπίζει αυτόματα τα -d/--data flags με JSON περιεχόμενο και ορίζει την κατάλληλη Content-Type κεφαλίδα στον κώδικα libcurl.

Πώς να προσθέσετε εξουσιοδότηση Bearer token στη C;

Περάστε το curl -H "Authorization: Bearer YOUR_TOKEN" URL στο curl2code και αυτό θα δημιουργήσει κώδικα libcurl με την κεφαλίδα εξουσιοδότησης: struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN"). Το curl2code εντοπίζει τα Bearer tokens τόσο από τα -H "Authorization: Bearer ..." όσο και από τα --oauth2-bearer flags. Για Basic auth, χρησιμοποιήστε το -u user:pass.

Πώς να ορίσετε την κεφαλίδα Content-Type στη C;

Το curl2code μετατρέπει το curl -H "Content-Type: application/json" URL σε κώδικα libcurl με τη σωστή κεφαλίδα: curl_slist_append(headers, "Content-Type: application/json"). Για δεδομένα -d, το curl χρησιμοποιεί από προεπιλογή το application/x-www-form-urlencoded· για μεταφορτώσεις φορμών -F, χρησιμοποιεί το multipart/form-data. Το curl2code αντιστοιχίζει το καθένα στο σωστό libcurl API.

Χρήσιμοι σύνδεσμοι

Οδηγοί curl

Μετατροπή curl σε άλλες γλώσσες