Πράγματα που μπορείτε να κάνετε με την cURL

18 Μαρ 2011 | Development

Δεν επιτρέπονται τα σχόλια.


Το cURL είναι ένα εργαλείο γραμμής εντολών για μεταφορά δεδομένων χρησιμοποιώντας διάφορα πρωτόκολλα επικοινωνίας. Το cURL κυκλοφόρησε με το libcurl, το οποίο είναι μια βιβλιοθήκη για το cURL, η οποία μπορεί να χρησιμοποιηθεί σε πολλές γλώσσες προγραμματισμού. Η ποιο διαδεδομένη της μορφή είναι αυτή στην PHP, με τη βιβλιοθήκη PHP Curl.

Το cURL είναι ένα εργαλείο γραμμής εντολών για τη μεταφορά δεδομένων με σύνταξη URL, που υποστηρίζει τα πρωτόκολλα επικοινωνίας DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET και TFTP. Το cURL υποστηρίζει επίσης πιστοποιητικά SSL, HTTP POST, HTTP PUT, ανέβασμα αρχείων μέσω FTP, ανέβασμα αρχείων βασισμένο στο πρωτόκολλο επικοινωνίας HTTP βασισμένο σε φόρμες, proxies, cookies, πιστοποίηση χρήστη με κωδικό πρόσβασης και όνομα χρήστη, file transfer resume, proxy tunneling και busload για επιπλέον δυνατότητες.

Απόσπασμα από το επίσημο site του cURL

Τόσο το cURL όσο και η επέκταση της PHP, libcURL, είναι εργαλεία που μπορούν να χρησιμοποιηθούν για την προσομοίωση ενός περιηγητή διαδικτύου (Web Browser), και κατ επέκταση μπορείτε να κάνετε πολλά !

Κατεβάστε ένα αρχείο

Μπορείτε να κατεβάσετε ένα αρχείο με τη χρήση του PHP cURL, και το κατέβασμα να πραγματοποιηθεί με ένα αίτημα HTTP

set_time_limit(0); // Ακύρωση των χρονικών ορίων για μεγάλα αρχεία.

$fp = fopen('διαδρομή προς το αρχείο', 'w+'); // Ορίζουμε που θα αποθηκευτεί το αρχείο
$ch = curl_init('http://somedomain.com/file.rar'); // Εδώ είναι το αρχείο που θέλουμε να κατεβάσουμε
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);

Ανεβάστε αρχεία μέσω του πρωτοκόλλου HTTP ή FTP

Μπορείτε να ανεβάσετε ένα αρχείο με τη χρήση του PHP cURL, και η μεταφορά των δεδομένων να πραγματοποιηθεί με το πρωτόκολλο HTTP ή FTP.

Ανεβάστε με το πρωτόκολλο HTTP

$postdata = array();
$postdata['fieldname'] = "@/path/to/file.zip";  // Το όνομα του πεδίου θα πρέπει να είναι το ίδιο με το όνομα του πεδίου για αρχείο στη φόρμα

$post_url = 'http://somedomain.com/upload.php'; // Το url στο οποίο θα ανεβάσουμε το αρχείο.

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
$response = curl_exec($ch);
curl_close ($ch);

Ανεβάστε με το πρωτόκολλο FTP

$filepath = '/path/to/local/file.zip'; 
$fp = $fp = fopen($filepath, 'r'); // Ανοίγουμε το αρχείο για ανάγνωση

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'ftp://ftp_login:[email protected]/'.'filaname.zip');
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filepath));
curl_exec ($ch);
$error_no = curl_errno($ch);
curl_close ($ch);

Κάντε ένα URL ποιο κοντό με το Bit.ly

Το Bit.ly είναι μια υπηρεσία συντόμευσης URL, που μας επιτρέπει μέσω της API να κάνουμε τα URL μας ποιο σύντομα. Στο παράδειγμα που ακολουθεί να συνδεθούμε στην API του bit.ly με τη βοήθεια του cURL.

$longurl='http://www.someurl.ext/';
$login='το όνομα χρήστη που έχετε για το bit.ly';
$appkey='το κλειδί σας';
$api_url = 'http://api.bit.ly/shorten?version=2.0.1&longUrl=' . urlencode($longurl) . '&format=xml&login=' . $login . '&apiKey=' . $appkey;

//Κλήση της API
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $api_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_ex_ec($curl);
curl_close($curl);

// Ανάλυση της XML απόκρισης για να ανακτήσουμε το νέο URL
$xml_object = new SimpleXMLElement($response);
echo $xml_object->results->nodeKeyVal->shortUrl; // Εμφανίζουμε το URL

Απόσπαση πληροφοριών από σελίδες

Βασικά το περιεχόμενο κάθε σελίδας είναι γραμμένο σε HTML. Με το cURL μπορείτε να ανακτήσετε τον κώδικα της HTML, να τον φιλτράρετε και να ανακτήσετε τμήματα της σελίδας ή και πληροφορίες. Για παράδειγμα μπορείτε να ανακτήσετε πληροφορίες από τα αποτελέσματα αναζήτησης μηχανών αναζήτησης όπως είναι το Google, Yahoo, Bing και άλλες.

function getPage($proxy, $url, $referer, $agent, $header, $timeout)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);

    $result['EXE'] = curl_exec($ch);
    $result['INF'] = curl_getinfo($ch);
    $result['ERR'] = curl_error($ch);
    curl_close($ch);
    return $result;
}

$result = getPage(
    '[proxy IP]:[port]', // Αφήστε καινό αν δεν χρησιμοποιείτε proxy.
    'Το url που θέλετε να αναλύσετε μαζί με το http://',
    'referer url', // Αφήστε καινό αν δεν θέλετε να έχετε referer
    'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8',
    1,
    5
);

Ενημερώστε την κατάσταση σας στο Facebook

Με τη βοήθεια του cURL μπορούμε να συνδεθούμε στο Facebook και να δημοσιεύσουμε την κατάσταση μας σας να το κάναμε με ένα περιηγητή διαδικτύου.

$status = 'Η κατάστασή σας';
$first_name = 'Το όνομα σας';
$login_email = 'Το e-mail που χρησιμοποιείτε στο Facebook για σύνδεση';
$login_pass = 'Ο κωδικός πρόσβασης σας';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/login.php?m&next=http://m.facebook.com/home.php');
curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($login_email).'&pass='.urlencode($login_pass).'&login=Login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_exec($ch);

curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/home.php');
$page = curl_exec($ch);

curl_setopt($ch, CURLOPT_POST, 1);
preg_match('/name="post_form_id" value="(.*)" \/>'.ucfirst($first_name).'/', $page, $form_id);
curl_setopt($ch, CURLOPT_POSTFIELDS,'post_form_id='.$form_id[1].'&status='.urlencode($status).'&update=Update');
curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/home.php');
curl_exec($ch);

Δοκιμάστε την ταχύτητα της σύνδεσης σας στο Internet

Το cURL διατηρεί πληροφορίες για την κατάσταση της σύνδεσης. Μπορείτε έτσι, να ανακτήσετε πληροφορίες για το πόσο θα διαρκέσει το download και με τι ταχύτητα κατεβάζετε.

error_reporting(E_ALL | E_STRICT);

// Αρχικοποίηση του cURL με ένα δεδομένο url
$url = 'http://download.bethere.co.uk/images/61859740_3c0c5dbc30_o.jpg';
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, 'Sitepoint Examples (thread 581410; http://www.sitepoint.com/forums/showthread.php?t=581410)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);

set_time_limit(65);

$execute = curl_exec($ch);
$info = curl_getinfo($ch);

// Ο χρόνος που καταναλώθηκε
$time = $info['total_time']
      - $info['namelookup_time']
      - $info['connect_time']
      - $info['pretransfer_time']
      - $info['starttransfer_time']
      - $info['redirect_time'];

// Εμφανίστε ένα φιλικό μήνυμα
header('Content-Type: text/plain');
printf("Κατέβηκαν %d bytes σε %0.4f δευτερόλεπτα.\n", $info['size_download'], $time);
printf("Που αντιστοιχεί σε %0.4f mbps\n", $info['size_download'] * 8 / $time / 1024 / 1024);
printf("Το CURL είπε %0.4f mbps\n", $info['speed_download'] * 8 / 1024 / 1024);

echo "\n\n Το curl_getinfo() είπε:\n", str_repeat('-', 31 + strlen($url)), "\n";
foreach ($info as $label => $value)
{
	printf("%-30s %s\n", $label, $value);
}

Κάντε ένα POST στο twitter

Το Twitter έχει και αυτό τη δική του API, την οποία μπορούμε να χρησιμοποιήσουμε μέσω του cURL για να υποβάλουμε τα tweet μας στο twitter.

// Ορίστε όνομα χρήστη και κωδικό πρόσβασης
$username = 'όνομα χρήστη';
$password = 'κωδικός πρόσβασης';

// Το μήνυμα που θέλετε να στείλετε
$message = 'Αυτό είναι ένα tweet με τη χρήση της php και του curl';

// Η διεύθυνση της API για το twitter
$url = 'http://twitter.com/statuses/update.xml';

// Εναλλακτική έκδοση με JSON
// $url = 'http://twitter.com/statuses/update.json';

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);

// Κάντε έλεγχο για επιτυχία ή αποτυχία.
if (empty($buffer))
{
    echo 'Μήνυμα';
}
else
{
    echo 'Επιτυχία';
}

Περισσότερα για τον CorfuGmr

CorfuGmr

Ονομάζομαι Νίκος και ασχολούμαι με το internet και την κατασκευή ιστοσελίδων από το 1998. Σήμερα, μετά από 12 χρόνια γεμάτα με ενημέρωση, εκπαίδευση και εξάσκηση έχω ανεβάσει σε ένα άλλο επίπεδο τις γνώσεις μου και τις τεχνικές μου. Στα άρθρα μου προσπαθώ να σας δείξω τα μικρά, αλλά σημαντικά πράγματα που με έχουν ανεβάσει σε αυτό το επίπεδο.








Σχόλια



seo

18 Μαρτίου 2011

θα ήθελα να τονίσω ότι υπηρεσίες με url shortening, δεν έιναι και ότι καλύτερο για seo. Βέβαια συνήθως χρησιμοποιούνται για να περάσουμε άρθρα στο twitter ή για να κάνουμε mask affiliate links…


Συγνώμη, τα σχόλια για αυτό το άρθρο είναι κλειστά.



^
Top
css.php