2013-10-24 6 views
7

का उपयोग करके एक WordPress व्यवस्थापक पृष्ठ कैसे प्राप्त करें, मुझे अपने वर्डप्रेस ब्लॉग व्यवस्थापक क्षेत्र के अंदर एक पृष्ठ लाने की आवश्यकता है। निम्नलिखित स्क्रिप्ट:Google Apps स्क्रिप्ट

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 तक पहुंच नहीं पा रहा हूं, जिसे मैं प्राप्त करना चाहता हूं। यह कैसे करें इस पर कोई विचार है?

+0

आप 'response.getHeaders()' का मूल्य की जाँच कर सकते हैं? देखें कि आप कौन से शीर्षलेख वापस प्राप्त करते हैं। यदि आपको स्थिति 200 मिलती है तो आपके क्रेडेंशियल्स सबसे अधिक गलत हैं (वर्डप्रेस आपको डैशबोर्ड पर रीडायरेक्ट करने के लिए स्थिति 302 या सफल लॉगिन पर 'redirect_to' पैरामीटर) जारी करता है। –

+0

इस शीर्ष लेख मैं जब मैं सही पासवर्ड का उपयोग प्राप्त है: {सामग्री-लंबाई = 1186, समय-सीमा समाप्त = बुध, 11 जनवरी 1984 05:00:00 GMT, सेट-कुकी = wordpresspass_CENSOREDSTRING = +; समाप्ति = सोम, 2 9-अक्टूबर-2012 09:18:51 जीएमटी; पथ =/wp /, कनेक्शन = रखें-जीवित, सर्वर = अपाचे, एक्स-संचालित-द्वारा = PHP/5.3.3-7 + squeeze14, कैश-कंट्रोल = नो-कैश, अवश्य-पुनरीक्षण, अधिकतम आयु = 0, pragma = नहीं-कैश, एक्स फ़्रेम-विकल्पों = SAMEORIGIN, दिनांक = मंगल, 29 अक्टू 2013 09:18:51 GMT, वैरी = Accept-Encoding, सामग्री-एन्कोडिंग = gzip, Keep-Alive = टाइमआउट = 2, अधिकतम = 9 7, सामग्री-प्रकार = पाठ/एचटीएमएल; charset = UTF-8} – tic

+0

और जब मैं गलत पासवर्ड का उपयोग करता हूं तो यह वह होता है: {सामग्री-लंबाई = 1546, समाप्ति = बुध, 11 जनवरी 1 9 84 05:00:00 GMT, सेट-कुकी = wordpress_test_cookie = WP + कुकी + जांच; पथ =/wp /, कनेक्शन = रखें-जीवित, सर्वर = अपाचे, एक्स-संचालित-द्वारा = PHP/5.3.3-7 + squeeze14, कैश-कंट्रोल = नो-कैश, अवश्य-पुनरीक्षण, अधिकतम आयु = 0, प्रगमा = नो-कैश, एक्स-फ़्रेम-विकल्प = समीरिजिन, दिनांक = मंगल, 2 9 अक्टूबर 2013 09:20:37 जीएमटी, वेरी = स्वीकृति-एन्कोडिंग, सामग्री-एन्कोडिंग = gzip, Keep-alive = timeout = 2, max = 99, सामग्री-प्रकार = पाठ/एचटीएमएल; charset = UTF-8} – tic

उत्तर

10

Google Apps स्क्रिप्ट्स के साथ कोई समस्या हो सकती है और एक URL पर पोस्ट-इन कर सकता है जो आपको एक पुनर्निर्देशन शीर्षलेख देता है।

ऐसा लगता है कि यह संभव एक पोस्ट के साथ पुन: निर्देशन का पालन करने के नहीं हो सकता है - यहाँ इस मुद्दे पर एक चर्चा है - https://code.google.com/p/google-apps-script-issues/issues/detail?id=1254#c3

इसलिए अगर आप अपने कोड को संशोधित रीडायरेक्ट का पालन नहीं करने के लिए, संभव है, कुकीज़ पर कब्जा और फिर अपने पृष्ठ पर दूसरा अनुरोध करें? मैं वास्तव में गैस का इस्तेमाल किया है नहीं, लेकिन यहाँ प्रलेखन पढ़ने से मेरी सर्वश्रेष्ठ अनुमान दिया है:

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 (मिली) का प्रतिक्रिया कोड वापस दे सकता है। यदि ऐसा है, तो हम हेडर को संसाधित करेंगे और विशेष रूप से "सेट-कुकी" शीर्षलेख के लिए देखेंगे। यदि यह सेट है, तो हम अनावश्यक सामान से छुटकारा पायेंगे और कुकीज़ मानों को स्टोर करेंगे।

अंत में हम व्यवस्थापक पर वांछित पृष्ठ (इस मामले में /wp/wp-admin/edit-comments.php) पर एक नया अनुरोध प्राप्त करते हैं, लेकिन इस बार हम "कुकी" शीर्षलेख संलग्न करते हैं जिसमें पिछले चरण में अर्जित सभी कुकीज़ शामिल हैं।

यदि सब कुछ उम्मीद के रूप में काम करता है, तो आप अपने व्यवस्थापक पृष्ठ पर :) मिलना चाहिए

मैं कुकीज़ सूचना के संचय (मामले में आप अपने पृष्ठ को अनेक अनुरोध करने जा रहे हैं) आदेश समय बचाने के लिए पर सलाह देंगे , संसाधन और अनुरोध।

फिर से - मैंने वास्तव में कोड का परीक्षण नहीं किया है, लेकिन सिद्धांत रूप में इसे काम करना चाहिए। कृपया इसका परीक्षण करें और मेरे द्वारा किए गए किसी भी निष्कर्ष के साथ मेरे पास वापस आएं।

+1

यह काम करता है, धन्यवाद। – tic

+0

¡ओले! ͏͏͏͏͏͏͏͏͏͏ – brasofilo

संबंधित मुद्दे