Установить spat заголовка запроса ie Browsershot и puppeteer - записка с аутентификацией - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь удалить веб-страницу, требующую аутентификации и пару specific заголовков. Я использую curl для отправки запроса на вход, а затем сохраняю заголовки. После этого я хотел бы получить доступ к его панели инструментов, чтобы я мог открыть раздел для начать лом. К сожалению, когда я устанавливаю заголовок с помощью setExtraHTTPHeaders в браузере, я получаю эту ошибку:

The command "PATH=$PATH:/usr/local/bin NODE_PATH=`npm root -g` node '/home/rabter/core/vendor/spatie/browsershot/src/../bin/browser.js' '{"url":"https:\/\/www.example.com\/employer\/dashboard","action":"requestsList","options":{"args":[],"viewport":{"width":800,"height":600},"extraHTTPHeaders":{"set-cookie":"access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjY5NGUxZjI5NmU0NzU2OTExM2IxOGU4MjIwZmY0YWMxM2JkMzgyM2JmMzI4M2EyNzhiNTgwY2ZkOTZhMDYyNzI0N2E1YzJiODQ5MTEyNDRlIn0.eyJhdWQiOiIzIiwianRpIjoiNjk0ZTFmMjk2ZTQ3NTY5MTEzYjE4ZTgyMjBmZjRhYzEzYmQzODIzYmYzMjgzYTI3OGI1ODBjZmQ5NmEwNjI3MjQ3YTVjMmI4NDkxMTI0NGUiLCJpYXQiOjE1OTYyODQwMjksIm5iZiI6MTU5NjI4NDAyOSwiZXhwIjoxNjI3ODIwMDI5LCJzdWIiOiI5NzA1MzIiLCJzY29wZXMiOltdfQ.cho8sKzPHkM8gjIBXLpcZzu4a7MUzgh_9t0gbd9YfYlnMY2wwvDCjoCa1z0SLfBR9--WmN4CH89Ydy4k6qbtNzhxTdDFEQa_qqmxfamHwZssI4tTzOIK3odJfozfZNfIUUDGiivRztozl-hPKVbQrZf8NVu4YluE_vn2rG_delovFzafM3MkyUnNdGDPmk2UXg6GXoidrzXFVMhqf3Pb0PcxELZ1XL5XhFVo0W8b1YEbUEW756zxcZ8jX0jIRBVXQpLij0ZS_Ej4rqYSkUW5Ow9lFs6f0C6F3S1pjITW_xH2sI3OVBLRda_u0HPYl44G7G1uNJRBWVxK_fR-59QpY9V9Scy_qJeKCNeRmWQ_WVBFGTM6aKONip0qI2q16vZN-iQs1X-GlfE9BpiFhlAlTnGjdiU-LkhyW26hCkRua56yMIhsOkDo9xQsTS7PHsh-Rl9mp_gZBOi3uOu7FjxjOf-_rLBFTwHKeAgX1-3oaiKnqpTmsjE6yEbTp06xYdiHvn-34dux-8PEeIb6BwVXe-Z6eruqRSJHQmVyxvwCqLFmDCFpitLR02TeVDuMFA2vtvtjIGAuzEPMFDnDvOt4j32-LCor2A3DclLcvBEfp-nVQ38W-dyuslX4FnD22dSfxRGOaxQU0e8EJ_3GOJnRjCGOcyrA0fwZ6KJR8bq2ATw; expires=Sun, 02-Aug-2020 12:13:50 GMT; Max-Age=86400; path=\/; domain=api.irantalent.com"}}}'" failed. Exit Code: 1(General error) Working directory: /home/rabter/core/public Output: ================ Error Output: ================ ┌──────────────────────────────────────────────────────────────┐ │ npm update check failed │ │ Try running with sudo or get access │ │ to the local update config store via │ │ sudo chown -R $USER:$(id -gn $USER) /var/cache/nginx/.config │ └──────────────────────────────────────────────────────────────┘ internal/modules/cjs/loader.js:960 throw err; ^ Error: Cannot find module 'puppeteer' Require stack: - /home/rabter/core/vendor/spatie/browsershot/bin/browser.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:957:15) at Function.Module._load (internal/modules/cjs/loader.js:840:27) at Module.require (internal/modules/cjs/loader.js:1019:19) at require (internal/modules/cjs/helpers.js:77:18) at Object.<anonymous> (/home/rabter/core/vendor/spatie/browsershot/bin/browser.js:1:19) at Module._compile (internal/modules/cjs/loader.js:1133:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10) at Module.load (internal/modules/cjs/loader.js:977:32) at Function.Module._load (internal/modules/cjs/loader.js:877:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) { code: 'MODULE_NOT_FOUND', requireStack: [ '/home/rabter/core/vendor/spatie/browsershot/bin/browser.js' ] }

Код для отправки запроса на публикацию

   //replace space with + for url encoding
    curl_setopt($ch,CURLOPT_URL,"https://api.example.com/oauth/token");
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $wholeheader=[];
  $headers = [];
// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers,&$wholeheader)
  {
    $wholeheader[count($wholeheader)]  = $header;
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;
    $headers[strtolower(trim($header[0]))][] = trim($header[1]);

    return $len;

  }

);
  curl_setopt($ch,CURLOPT_POST,1);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$postFields);
    curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");
    $response = json_decode(curl_exec($ch));
  

сделайте заголовки как один

foreach($headers as $header=>$value){
    foreach($value as $index=>$val){
        if($index ==0){
//because it has multiple cookies we separate them with `;`
            $newheader[$header] =  ($index+1 < count($value) ? $val.';' : $val);
        }else{
            $newheader[$header] .=  ($index+1 < count($value) ? $val.';' : $val);
        }
    }
}

следующая ссылка на запрос: https://www.example.com/employer/dashboard, которая вызывает вышеуказанную ошибку

$requests = Browsershot::url('https://www.example.com/employer/dashboard')
->setExtraHttpHeaders(['Custom-Header-Name' => 'Custom-Header-Value'])
->bodyHtml();

Итак, как я могу достичь этого, или существует ли какой-либо метод working, с помощью которого вы можете удалить данные с сайта, требующего аутентификации.

Если кто-нибудь знает какой-либо другой подход с использованием laravel или php или даже javascript, дайте мне знать (должен работать со страницами, требующими аутентификации).

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...