PHP cURL how to add the User Agent value OR overcome the Servers blocking cURL requests?

98,677

Solution 1

  1. In the server side, we can block some requests by recognize the header fields(including refer, cookie, user-agent and so on) in http request, the ip address, access frequency. And in most case, requests generated by machine usually has something different than human requests,for example, no refer & cookie, or with higher access frequency, we can write some rules to deny these requests.

  2. According to 1, you can try your best to simulate real requests by filling the header fields, using random and slower frequency, using more ip addresses. (sounds like attack)

  3. Generally, using lower frequency and do not make heavy load for their server, follow their access rules, they will seldom block your requests.

Solution 2

IF you are still facing the problem then do the following.

1.

$config['useragent'] = 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0';

curl_setopt($curl, CURLOPT_USERAGENT, $config['useragent']);
curl_setopt($curl, CURLOPT_REFERER, 'https://www.domain.com/');

2.

$dir                   = dirname(__FILE__);
$config['cookie_file'] = $dir . '/cookies/' . md5($_SERVER['REMOTE_ADDR']) . '.txt';

curl_setopt($curl, CURLOPT_COOKIEFILE, $config['cookie_file']);
curl_setopt($curl, CURLOPT_COOKIEJAR, $config['cookie_file']);

NOTE: You need a COOKIES folder in directory.

3.

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

If doing these don't solve the problem then Give the Sample Input/Output/Error/etc. So, that more precise solution can be provided.

Solution 3

  $agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)';
  $curl=curl_init();
  curl_setopt($curl, CURLOPT_USERAGENT, $agent);

Solution 4

Server cannot block only cURL requests because they are just HTTP requests. So changing User Agent of your cURL can solve your problem, as server will think you are connecting through browser presented in UA.

Share:
98,677

Related videos on Youtube

夏期劇場
Author by

夏期劇場

SOreadytohelp

Updated on January 25, 2021

Comments

  • 夏期劇場
    夏期劇場 over 3 years

    I am transferring an Object Array. I have a cURL client (submitter) on own Server and listening script on other's Server, which one is not under my control. Then i think there, they are blocking the incoming cURL requests because when i test with the normal HTML <form>, it is working. But not via cURL anyway.

    So i think they have done some restriction to cURL.

    Then my questions here are:

    1. Can a Server restrict/block the cURL incoming requests?
    2. If so, can i trick/change the HTTP Header (User Agent) in my initiating cURL script?
    3. Or is there any other possible stories?

    Thanks!

  • TroyCheng
    TroyCheng almost 11 years
    Yes, for most middle and small level traffic, it's usually not worth to do this. But for those site with heavy load, I saw many kinds of methods to filter the traffic.
  • 夏期劇場
    夏期劇場 almost 11 years
    Ya mine is on some third-party Cloud provider. So i'm sure they will be doing this. So for me, what even thing should i ask them to check? :(
  • TroyCheng
    TroyCheng almost 11 years
    Just describe your problem and ask them about the filter rules and how to avoid being denied.