<?php $query = $_GET['q']; $bookmark = null; if (array_key_exists("bookmark", $_GET)) { $bookmark = urldecode($_GET["bookmark"]); } $csrftoken = null; if (array_key_exists("csrftoken", $_GET)) { $csrftoken = $_GET["csrftoken"]; } $url = "https://www.pinterest.com/resource/BaseSearchResource/get/"; class SearchResult { public $images; public $bookmark; } $header_function = function($ch, $rawheader) { global $csrftoken; $len = strlen($rawheader); $header = explode(":", $rawheader, 2); if (count($header) != 2) return $len; // we are only interested in set-cookie header if (trim($header[0]) != "set-cookie") return $len; $cookie = explode(";", trim($header[1]), 2); $cookie = explode("=", $cookie[0], 2); switch ($cookie[0]) { case "csrftoken": $csrftoken = $cookie[1]; } return $len; }; $prepare_search_curl_obj = function($query, $bookmark) use ($url, $header_function, $csrftoken) { $data_param_obj = array( "options"=>array( "query"=>$query ) ); if ($bookmark != null) $data_param_obj["options"]["bookmarks"] = array($bookmark); $data_param = urlencode(json_encode($data_param_obj)); $headers = array(); if ($csrftoken != null) { $headers[] = "x-csrftoken: $csrftoken"; $headers[] = "cookie: csrftoken=$csrftoken"; } $finalurl = $url; if ($bookmark == null) $finalurl = "$url?data=$data_param"; $ch = curl_init($finalurl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADERFUNCTION, $header_function); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); if ($bookmark != null) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, "data=$data_param"); } return $ch; }; $search = function($query, $bookmark) use($prepare_search_curl_obj) { $ch = $prepare_search_curl_obj($query, $bookmark); $response = curl_exec($ch); $data = json_decode($response); $images = array(); foreach ($data->{"resource_response"}->{"data"}->{"results"} as $result) { $image = $result->{"images"}->{"orig"}; $url = $image->{"url"}; array_push($images, $url); } echo json_encode($images); $result = new SearchResult(); $result->images = $images; if (property_exists($data->{"resource_response"}, "bookmark")) $result->bookmark = $data->{"resource_response"}->{"bookmark"}; return $result; }; $result = $search($query, $bookmark); if ($result->bookmark != null) { $query_encoded = urlencode($query); $bookmark_encoded = urlencode($result->bookmark); $csrftoken_encoded = urlencode($csrftoken); // echo "<h2 style=\"text-align: center;\"><a href=\"/search.php?q=$query_encoded&bookmark=$bookmark_encoded&csrftoken=$csrftoken_encoded\">Next page</a></h2><br><br><br>"; } header("Content-Type: application/json"); ?>