<?php
function fetchUrlContent( $url ) {
// Initialize cURL session
// Set cURL options
curl_setopt ( $ch , CURLOPT_RETURNTRANSFER
, true ) ; // Return the content as a string curl_setopt ( $ch , CURLOPT_TIMEOUT
, 30 ) ; // Set a timeout (in seconds) curl_setopt ( $ch , CURLOPT_FOLLOWLOCATION
, true ) ; // Follow redirects curl_setopt ( $ch , CURLOPT_SSL_VERIFYPEER
, false ) ; // Disable SSL verification (optional)
// Resolve DNS dynamically by adding Google's DNS (8.8.8.8)
// We'll allow cURL to resolve the URL to its IP using Google's DNS server.
curl_setopt ( $ch , CURLOPT_RESOLVE
, [ "$domain :80:8.8.8.8" ] ) ;
// Execute cURL and get the response
// Check for errors
}
// Close the cURL session
return $response ;
}
function handleURL( $url ) {
// If the URL is valid, fetch its content
$content = fetchUrlContent( $url ) ;
if ( $content ) {
return $content ;
} else {
return "Failed to retrieve content from $url ." ;
}
} else {
return "Invalid URL: $url ." ;
}
}
// Example Usage
$urls = [
'https://w...content-available-to-author-only...s.com/sites/robertadams/2017/03/02/top-income-earning-blogs/' ,
'https://b...content-available-to-author-only...a.com' ,
'https://w...content-available-to-author-only...e.com'
] ;
foreach ( $urls as $url ) {
$result = handleURL( $url ) ;
echo "Result for $url :\n " ;
echo $result . "\n \n " ;
}
?>
PD9waHAKZnVuY3Rpb24gZmV0Y2hVcmxDb250ZW50KCR1cmwpIHsKICAgIC8vIEluaXRpYWxpemUgY1VSTCBzZXNzaW9uCiAgICAkY2ggPSBjdXJsX2luaXQoKTsKCiAgICAvLyBTZXQgY1VSTCBvcHRpb25zCiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7ICAvLyBSZXR1cm4gdGhlIGNvbnRlbnQgYXMgYSBzdHJpbmcKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCAzMCk7ICAvLyBTZXQgYSB0aW1lb3V0IChpbiBzZWNvbmRzKQogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCB0cnVlKTsgLy8gRm9sbG93IHJlZGlyZWN0cwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBmYWxzZSk7IC8vIERpc2FibGUgU1NMIHZlcmlmaWNhdGlvbiAob3B0aW9uYWwpCgogICAgLy8gUmVzb2x2ZSBETlMgZHluYW1pY2FsbHkgYnkgYWRkaW5nIEdvb2dsZSdzIEROUyAoOC44LjguOCkKICAgIC8vIFdlJ2xsIGFsbG93IGNVUkwgdG8gcmVzb2x2ZSB0aGUgVVJMIHRvIGl0cyBJUCB1c2luZyBHb29nbGUncyBETlMgc2VydmVyLgogICAgJGRvbWFpbiA9IHBhcnNlX3VybCgkdXJsLCBQSFBfVVJMX0hPU1QpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFU09MVkUsIFsiJGRvbWFpbjo4MDo4LjguOC44Il0pOwoKICAgIC8vIEV4ZWN1dGUgY1VSTCBhbmQgZ2V0IHRoZSByZXNwb25zZQogICAgJHJlc3BvbnNlID0gY3VybF9leGVjKCRjaCk7CgogICAgLy8gQ2hlY2sgZm9yIGVycm9ycwogICAgaWYoY3VybF9lcnJubygkY2gpKSB7CiAgICAgICAgZWNobyAnRXJyb3I6ICcgLiBjdXJsX2Vycm9yKCRjaCk7CiAgICB9CgogICAgLy8gQ2xvc2UgdGhlIGNVUkwgc2Vzc2lvbgogICAgY3VybF9jbG9zZSgkY2gpOwoKICAgIHJldHVybiAkcmVzcG9uc2U7Cn0KCmZ1bmN0aW9uIGhhbmRsZVVSTCgkdXJsKSB7CiAgICBpZiAoZmlsdGVyX3ZhcigkdXJsLCBGSUxURVJfVkFMSURBVEVfVVJMKSkgewogICAgICAgIC8vIElmIHRoZSBVUkwgaXMgdmFsaWQsIGZldGNoIGl0cyBjb250ZW50CiAgICAgICAgJGNvbnRlbnQgPSBmZXRjaFVybENvbnRlbnQoJHVybCk7CgogICAgICAgIGlmICgkY29udGVudCkgewogICAgICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICJGYWlsZWQgdG8gcmV0cmlldmUgY29udGVudCBmcm9tICR1cmwuIjsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAiSW52YWxpZCBVUkw6ICR1cmwuIjsKICAgIH0KfQoKLy8gRXhhbXBsZSBVc2FnZQokdXJscyA9IFsKICAgICdodHRwczovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnMuY29tL3NpdGVzL3JvYmVydGFkYW1zLzIwMTcvMDMvMDIvdG9wLWluY29tZS1lYXJuaW5nLWJsb2dzLycsCiAgICAnaHR0cHM6Ly9iLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5hLmNvbScsCiAgICAnaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLmNvbScKXTsKCmZvcmVhY2ggKCR1cmxzIGFzICR1cmwpIHsKICAgICRyZXN1bHQgPSBoYW5kbGVVUkwoJHVybCk7CiAgICBlY2hvICJSZXN1bHQgZm9yICR1cmw6XG4iOwogICAgZWNobyAkcmVzdWx0IC4gIlxuXG4iOwp9CgoKPz4=