在使用PHP進行網絡編程的過程中,常常會涉及到使用curl庫進行網頁的訪問和數據的處理,而在處理網頁過程中,有時候會遇到一些網站對JS腳本的限制,這時候我們可以使用php curl noscript選項來進行調整和處理。
例如,有時候在使用curl庫訪問網站時,我們會發現網站需要我們執行一些JS腳本才能夠獲取到我們需要的數據。這種情況下,我們可以使用curl庫中的noscript選項來取消對JS腳本的支持,從而直接獲取需要的數據。
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.example.com/data.php"); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_ENCODING, ""); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 3600); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_NOSIGNAL, 1); //avoid curl loops curl_setopt($ch, CURLOPT_REFERER, "http://www.example.com"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded")); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, "param1=value1¶m2=value2"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_REFERER, 'http://www.example.com'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_NOBODY,true); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0"); //disable script execution curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Language: en-US,en;q=0.5','Connection: keep-alive', 'Referer: http://www.example.com' ,'Content-Type: application/x-www-form-urlencoded','User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0', 'DNT: 1', 'Expect:')); curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); $result = curl_exec($ch); curl_close($ch);
在上述代碼中,我們通過使用curl_setopt函數來對noscript進行配置和設置,從而取消了對JS腳本的支持,避免了在訪問時出現由于JS腳本的執行而導致的問題。
除了在訪問時,noscript還可以在其他場合下使用。例如,在處理網頁數據時,有時候需要從HTML文本中去除JS腳本,這時候我們也可以使用noscript選項來進行處理。
$html = file_get_contents("http://www.example.com"); //remove noscript tags $html = preg_replace('/
在上述代碼中,我們使用file_get_contents函數獲取網頁內容,并使用preg_replace函數來移除noscript標簽,從而我們可以獲取到不包含JS腳本的HTML文本。
總之,在使用curl庫進行網頁處理時,noscript是一個十分重要的選項,能夠解決很多由JS腳本引起的問題,大大提高了我們的數據獲取和處理效率。
下一篇php 運行 結果