bestsource

Google 앱 스크립트를 사용하여 워드프레스 관리 페이지를 가져오려면 어떻게 해야 합니까?

bestsource 2023. 3. 15. 19:49
반응형

Google 앱 스크립트를 사용하여 워드프레스 관리 페이지를 가져오려면 어떻게 해야 합니까?

Wordpress 블로그 관리 영역에서 페이지를 가져와야 합니다.다음 스크립트:

function fetchAdminPage() {
   var url = "http://www.mydomain.invalid/wp/wp-admin/wp-login.php";
   var options = {
      "method": "post",
      "payload": {
      "log": "admin",
      "pwd": "password",
      "wp-submit": "Login",
      "redirect_to":"http://www.mydomain.invalid/wp/wp-admin/edit-comments.php",
      "testcookie": 1
      }
   };
   var response = UrlFetchApp.fetch(url, options);
   ...
}

오류 없이 실행됩니다.어쨌든,response.getContentText()로그인 페이지가 반환되며 가져오는 페이지http://www.mydomain.invalid/wp/wp-admin/edit-comments.php에 액세스할 수 없습니다.어떻게 하는지 아세요?

Google 앱 스크립트에 문제가 있을 수 있으며 리디렉션 헤더를 반환하는 URL에 포스트잉합니다.

포스트로 리다이렉트를 팔로우 하는 것은 불가능할 것 같습니다.이 문제에 대한 논의는 다음과 같습니다.

https://issuetracker.google.com/issues/36754794

리다이렉트를 따르지 않도록 코드를 수정하면 쿠키를 캡처한 후 페이지에 두 번째 요청을 할 수 있습니까?실제로 GAS를 사용한 적은 없습니다만, 메뉴얼을 읽고, 이하를 추측해 보겠습니다.

function fetchAdminPage() {
   var url = "http://www.mydomain.invalid/wp/wp-admin/wp-login.php";
   var options = {
      "method": "post",
      "payload": {
      "log": "admin",
      "pwd": "password",
      "wp-submit": "Login",
      "testcookie": 1
      },
      "followRedirects": false
   };
   var response = UrlFetchApp.fetch(url, options);
   if ( response.getResponseCode() == 200 ) {
     // Incorrect user/pass combo
   } else if ( response.getResponseCode() == 302 ) {
     // Logged-in
     var headers = response.getAllHeaders();
     if ( typeof headers['Set-Cookie'] !== 'undefined' ) {
        // Make sure that we are working with an array of cookies
        var cookies = typeof headers['Set-Cookie'] == 'string' ? [ headers['Set-Cookie'] ] : headers['Set-Cookie'];
        for (var i = 0; i < cookies.length; i++) {
           // We only need the cookie's value - it might have path, expiry time, etc here
           cookies[i] = cookies[i].split( ';' )[0];
        };
        url = "http://www.mydomain.invalid/wp/wp-admin/edit-comments.php";
        options = {
            "method": "get",
            // Set the cookies so that we appear logged-in
            "headers": {
               "Cookie": cookies.join(';')
            }
        };
        response = UrlFetchApp.fetch(url, options);
     };
   };
   ...
}

디버깅과 에러 처리를 추가할 필요가 있는 것은 분명하지만, 이 기능을 사용하면 문제가 해결됩니다.

여기서는 로그인 양식에 먼저 글을 올립니다.모든 것이 정상적으로 진행된다고 가정하면 응답 코드 302(발견)가 반환됩니다.이 경우 헤더를 처리하고 특히 "Set-Cookie" 헤더를 찾습니다.설정이 되어 있으면 불필요한 것을 제거하고 쿠키 값을 저장합니다.

마지막으로 관리자(이 경우)의 원하는 페이지에 새로운 get 요구를 합니다./wp/wp-admin/edit-comments.php그러나 이번에는 이전 단계에서 획득한 모든 쿠키를 포함하는 "Cookie" 헤더를 첨부합니다.

모든 것이 예상대로 동작하는 경우는, admin 페이지가 표시됩니다.

시간, 자원 및 요청을 절약하기 위해 쿠키 정보를 저장하는 것이 좋습니다(페이지에 여러 요청을 하는 경우).

다시 말씀드리지만, 실제로 코드를 테스트한 적은 없지만 이론적으로 작동해야 합니다.시험해보고 결과물을 가지고 저에게 돌아오세요.

언급URL : https://stackoverflow.com/questions/19567105/how-to-fetch-a-wordpress-admin-page-using-google-apps-script

반응형