Прежде всего, я не могу воспроизвести вашу проблему. Я использовал следующие 3 команды cURL для имитации вашей ситуации:
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.5 (KHTML, like Gecko) Version/5.1 Safari/534.51.3" http://www.google.com/search?q=the+keyword
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.5 (KHTML, like Gecko) Version/5.1 Safari/534.51.3" http://www.google.pl/search?q=the+keyword
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.5 (KHTML, like Gecko) Version/5.1 Safari/534.51.3" http://www.google.nl/search?q=the+keyword
Первый - .com
, потому что это должно работать в качестве вашей контрольной точки. Положительно.
Второй - .pl
, потому что именно здесь вы сталкиваетесь с проблемами. Это также просто работает для меня.
Третий - .nl
, потому что это то место, где я живу (так что, в принципе, .pl
для вас). Это тоже просто работает для меня.
Я не уверен, но это может быть одним из возможных объяснений:
- Google.com является международным, например, когда я что-то ввожу в
google.nl
, я все равно перехожу на google.com/search?q=...
(единственное отличие - дополнительный lang
-парам).
- С
google.nl/search?q=...
перенаправляет на google.com
(302
). Его фактическое тело пусто.
- Не знаю, но возможно, что cURL не может обработать перенаправления, или вам нужно установить дополнительный флаг.
Если это равно true (что я сейчас проверю), вам нужно использовать google.com
в качестве домена и добавить дополнительный lang
-параметр вместо использования google.pl
.
Причина, по которой ваш другой сервер делает свое дело, может быть в том, что конфигурация cURL меняется или версия cURL не совпадает.
Кроме того, он блокирует стандартную строку пользовательского агента cURL, поэтому я также предлагаю вам изменить ее на что-то вроде:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.5 (KHTML, like Gecko) Version/5.1 Safari/534.51.3
Это не имеет ничего общего с проблемами, с которыми вы сталкиваетесь, но вы на самом деле не закрываете сокет cURL, поскольку возвращаетесь, прежде чем закрыть его (все, что после return ...
будет «пропущено»).