как устранить проблему с получением sedoparking.com/ HTML-код Gogolebot в crul и запрос на поглощение в laravel 7

#php #laravel #curl #guzzle #laravel-7

Вопрос:

в laravel 7 на одной из моих работ я отправляю http-запрос, и на 95 процентов из них я получаю html-ответ.

Запрос

 $url = "some url";
/**
 * Request with Guzzle and xml
 */
$response = Http::retry(3, 1000)->timeout(60)->withHeaders([
    'User-Agent' => 'curl/7.65.3',
    'Accept' => 'text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Encoding' => 'gzip, deflate, br',
])->withOptions([
    'referer' => true,
    'verify' => false
])->get($url);
if($response->successful()){
    try {
        self::$response = $response->body();
        return true;
    } catch (Throwable $th) {
        Log::error(
            'status:' . $response->status() .'n' .
            'server Error:' . $response->serverError() .'n' .
            'client Error:' . $response->clientError() .'n' .
            'body:' . $response->body()
        );
        return false;
    }
    return true;
}else{
    try {
        Log::error($url);
        Log::error(
            'status:' . $response->status() .'n' .
            'server Error:' . $response->serverError() .'n' .
            'client Error:' . $response->clientError() .'n' .
            'body:' . $response->body()
        );
    } catch (Throwable $th) {
        Log::error("couldn't even log the error of guzzle request");
        Log::error($th);
    }
    return false;
}
 

Ответ

 
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style type="text/css">
        html, body, #partner, iframe {
            height: 100%;
            width: 100%;
            margin: 0;
            padding: 0;
            border: 0;
            outline: 0;
            font-size: 100%;
            vertical-align: baseline;
            background: transparent;
        }

        body {
            overflow: hidden;
        }
    </style>
    <meta content="NOW" name="expires">
    <meta content="index, follow, all" name="GOOGLEBOT">
    <meta content="index, follow, all" name="robots">
    <!-- Following Meta-Tag fixes scaling-issues on mobile devices -->
    <meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0;
            user-scalable=0;" name="viewport">
</head>
<body>

<div id="partner"></div>
<script type="text/javascript">
    function getParam() {
        var query = window.location.search.substring(1);
        var vars = query.split("amp;");
        for (var i = 0; i < vars.length; i  ) {
            var pair = vars[i].split("=");
            if (pair[0] == 'domain') {
                return pair[1];
            }
        }
        return  window.location.host;
    }
    ;

    document.write(
            '<script type="text/javascript" language="JavaScript"'
                      'src="//sedoparking.com/frmpark/'
                      getParam()   '/'
                      'sedopark'
                      '/park.js">'
                      '</script>'
    );
</script>
</body>
</html>
 

То, что я делал

  • попросил поставщика проверить, есть ли у их сервера какая-либо защита от наших запросов. они этого не делают, и все другие типы запросов, которые мы отправляем (покупка, контакты и т.д.), У них нет проблем.
  • обновил наш php до 7.3 на всех наших доменах и поддоменах
  • сначала это был завиток, я изменил его на HTTP, все еще есть та же проблема.
  • Я добавил «Агент пользователя» = > «curl/7.65.3» И «проверка» = > > ложь на основе различных поисков в interent. но ни один из них не устранил проблему.
  • в жратве > src >> обработчик >>> crulfactory.php изменил значение проверки на всегда равное нулю
 if ($options['verify'] === false) {
    unset($conf[CURLOPT_CAINFO]);
    $conf[CURLOPT_SSL_VERIFYHOST] = 0;
    $conf[CURLOPT_SSL_VERIFYPEER] = false;
} else {
    // $conf[CURLOPT_SSL_VERIFYHOST] = 2;
    // $conf[CURLOPT_SSL_VERIFYPEER] = true;
    $conf[CURLOPT_SSL_VERIFYHOST] = 0;
    $conf[CURLOPT_SSL_VERIFYPEER] = false;
 

Дополнительная информация

Это задание отправляется регулярно (20 заданий одновременно) каждые 30 минут

согласно журналам, это показывает, что http-запрос успешно вернул ответ. но когда я регистрирую ответ, я получаю html-код. Я должен получить XML того, что мне присылает поставщик.

Комментарии:

1. Что вы получаете, когда это терпит неудачу? Отображаются ли в файлах журнала какие-либо сведения?

2. @NigelRen согласно журналам, это показывает, что http-запрос успешно вернул ответ. но когда я регистрирую ответ, я получаю html-код. Я должен получить XML того, что мне присылает поставщик.