SoFunction
Updated on 2025-03-03

Deeply understand the curl class, which can be used to simulate get, post and curl downloads


<?php
class Curl {
 /*
* Get access to the specified address
* @param string url Address to access
* @param  string cookie storage address, if no cookie is sent
* @return string curl_exec() information obtained
  * @author andy
  **/
 public function get( $url, $cookie='' )
 {
// Initialize a cURL session
  $curl = curl_init($url);
// The header information is not displayed
  curl_setopt($curl, CURLOPT_HEADER, 0);
// Return the information obtained by curl_exec() as a file stream instead of directly outputting it.
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// Use automatic jump
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  if(!empty($cookie)) {
// The file name containing cookie data. The format of the cookie file can be in Netscape format, or just plain HTTP header information is stored in the file.
   curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
  }
// Automatically set Referer
  curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
// Execute a curl session
  $tmp = curl_exec($curl);
// Close curl session
  curl_close($curl);
  return $tmp;
 }
 /*
* Post mode simulates the request specified address
* @param string url The specified address for the request
* @param array  params The requested
* #patam string cookie storage address
* @return string curl_exec() information obtained
  * @author andy
  **/
 public function post( $url, $params, $cookie )
 {
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_HEADER, 0);
// Check the source of the certification certificate, 0 means to prevent the check of the legality of the certificate.
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
// Check whether the SSL encryption algorithm exists from the certificate
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
//Simulate the browser used by the user and include a string with the "user-agent" header in the HTTP request.
  curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
//Send a regular POST request, type: application/x-www-form-urlencoded, just like a form submitted.
  curl_setopt($curl, CURLOPT_POST, 1);
// Return the information obtained by curl_exec() as a file stream instead of directly outputting it.
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// Use automatic jump
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
// Automatically set Referer
  curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
// Cookie address
  curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
// All data is sent using the "POST" operation in the HTTP protocol. To send a file,
// Prefix the file name with @ and use the full path. This parameter can be passed through the urlencoded string
// Similar to 'para1=val1¶2=val2&...' or use an array with the field name as the key value and the field data as the value
// If the value is an array, the Content-Type header will be set to multipart/form-data.
  curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
  $result = curl_exec($curl);
  curl_close($curl);
  return $result;
 }
 /**
* Remote download
* @param string $remote Remote image address
* @param string $local locally saved address
* @param string $cookie cookie address Optional parameters are
* Cookies are required for some websites to download pictures on the website
* So you need to add cookies
  * @return void
  * @author andy
  */
 public function reutersload($remote, $local, $cookie= '') {
  $cp = curl_init($remote);
  $fp = fopen($local,"w");
  curl_setopt($cp, CURLOPT_FILE, $fp);
  curl_setopt($cp, CURLOPT_HEADER, 0);
  if($cookie != '') {
   curl_setopt($cp, CURLOPT_COOKIEFILE, $cookie);
  }
  curl_exec($cp);
  curl_close($cp);
  fclose($fp);
 }
}