एक पूर्ण HTTP जीईटी किए बिना वर्डप्रेस यूआरएल का पता लगाना?


21

मैं एक वनबॉक्सिंग रूटीन लिखने की कोशिश कर रहा हूं जो वर्डप्रेस ब्लॉग प्रविष्टियों को विशेष उपचार देता है। इसलिए सामग्री में एक सरल, बिना सटा हुआ URL दिया गया है, जैसे कि

http://blog.stackoverflow.com/2011/03/a-new-name-for-stack-overflow-with-surprise-ending/

मैं कैसे पता लगाऊंगा कि यह एक वर्डप्रेस इंस्टॉलेशन है, आदर्श रूप से मैं देखे गए प्रत्येक URL पर पूर्ण HTTP जीईटी किए बिना।

वर्डप्रेस यूआरएल के लिए निश्चित रूप से आम कन्वेंशन हैं जिन्हें हम शुरू कर सकते हैं, जो कम से कम कुछ यूआरएल को विवाद से दूर करता है। इस मामले में यह है ...

http://example.com/year/month/slug-goes-here

लेकिन यह एक सार्वभौमिक स्थिरांक भी नहीं है।

मैंने उस URL के हेडर को HTTP HEAD का उपयोग करके देखने की कोशिश की , और मैं देखता हूं:

Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:18340
Content-Type:text/html; charset=UTF-8
Date:Thu, 07 Jun 2012 07:07:38 GMT
Keep-Alive:timeout=15, max=100
Server:Apache/2.2.9 (Ubuntu) DAV/2 PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g
Vary:Cookie,Accept-Encoding
WP-Super-Cache:Served legacy cache file
X-Pingback:http://blog.stackoverflow.com/xmlrpc.php
X-Powered-By:PHP/5.2.6-2ubuntu4.2

मुझे नहीं लगता कि उपस्थिति पर भरोसा WP-Super-Cacheकरना विशेष रूप से विश्वसनीय होगा, और यह केवल एक चीज है जो मैं हेडर में देखता हूं जो मदद करेगा, इसलिए शायद एक वर्डप्रेस इंस्टॉल में शून्य आम HTTP हेडर हैं?


स्पष्ट करने के लिए - क्या आप .org स्वयं-होस्ट स्थापित या केवल .com में रुचि रखते हैं?
रार्स्ट

सभी वर्डप्रेस इंस्टाल - कोई भी वर्डप्रेस इनस्टॉल
जेफ एटवुड

1
क्या आप संबद्ध RSS फ़ीड पृष्ठ पर 200 की जांच कर सकते हैं?
केविन बर्क

1
आप वास्तव में ऐसा क्यों चाहते हैं? क्या झूठी सकारात्मक या झूठी नकारात्मक बदतर हैं? उस साइट के बारे में क्या है जो Wordpress में पृष्ठों को उत्पन्न करती है और समय-समय पर सभी पृष्ठों का एक स्थिर डंप निर्यात करती है? (उदा। thespace.org )
rjmunro

जवाबों:


17

मेरे अनुभव और त्वरित कोड खोज से कोई जानबूझकर तरीके नहीं हैं WP हेडर में खुद की पहचान करता है। हालांकि कुछ ऐसे भी हैं जो पर्याप्त रूप से भिन्न प्रतीत होते हैं और जिन्हें अनुकूलित किए जाने की संभावना नहीं है।

सिर /wp-login.php.org स्थापित निम्नलिखित शामिल होंगे:

 Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/

और .com के लिए:

Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/; domain=.wordpress.com

कुकी का नाम TEST_COOKIEनिरंतर परिभाषित करके अनुकूलन योग्य है , लेकिन WP Cookie checkस्ट्रिंग को कोर में हार्डकोड किया गया है, साथ ही set_cookie()फ़ाइल के स्रोत में इसके लिए कॉल किया गया है।

पता लगाने के wp-login.phpलिए कुछ URL शॉर्टकट हैं ( wp_redirect_admin_locations()WP 3.4 से लागू किया गया है (टिकट # 19607 देखें ):

/loginसाइट की जड़ जहां भी 302होती है wp-login.php, उसे पुनर्निर्देशित करती है।

तो एकमात्र परिदृश्य जिसे WP में स्थापित किया गया है और सब-साइट तक सीमित करने के लिए उपयोग किए बिना मज़बूती से पता नहीं लगाया जा सकता है, बिल्कुल भी साइट की जड़ का प्रबंधन करने के लिए उपयोग नहीं किया जा रहा है।


12

एक ही निर्देशिका में (उपनिर्देशिका प्रतिष्ठानों में भी) के HEADलिए एक अनुरोध भेजें । WordPress में आपको string के response के रूप में एक header मिलेगा ।/wp-feed.php/xmlrpc.phpLocationfeed

आपके उदाहरण में blog.stackoverflow.comआपको मिलेगा:

HTTP/1.1 301 Moved Permanently\r\n
Date: Thu, 07 Jun 2012 07:30:10 GMT\r\n
Server: Apache/2.2.9 (Ubuntu) DAV/2 PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g\r\n
X-Powered-By: PHP/5.2.6-2ubuntu4.2\r\n
Location: http://blog.stackoverflow.com/feed/\r\n
Vary: Accept-Encoding\r\n
Content-Type: text/html; charset=UTF-8\r\n
\r\n

xmlrpc.phpअकेले एक फ़ाइल का नंगे अस्तित्व पर्याप्त सुरक्षित नहीं है। कोई भी व्यक्ति किसी फ़ाइल को यह नाम दे सकता है।

कैविएट: X-Pingbackहेडर को फ़िल्टर करके अक्षम किया जा सकता है 'wp_headers'। इसलिए मेरा सुझाव बुलेट प्रूफ नहीं है।

संबंधित: एक साइट को छिपाने के लिए कदम उठाएं वर्डप्रेस का उपयोग कर रहा है?


X-Pingback:http://example.com/xmlrpc.phpहेडर में नहीं देख यह एक WP ब्लॉग है मानने के लिए एक मजबूत पर्याप्त संकेत हो सकता है?
जेफ एटवुड

यह "डिफ़ॉल्ट" वर्डप्रेस इंस्टॉल के लिए काम करेगा, लेकिन आप वर्डप्रेस को एक उपनिर्देशिका में भी चला सकते हैं , जो इस पद्धति को कमजोर कर देगा।
navitronic

1
@navitronic xmlrpc.phpहमेशा उसी निर्देशिका में wp-feed.phpहै जहां तक ​​मैं देख सकता हूं।
FUXIA

1
एक्स-पिंगबैक, केवल WP ही नहीं, किसी भी पिंगबैक-सक्षम संसाधन के लिए एक मानक (ish) हेडर है।
NickFitz

@NickFitz यही कारण है कि आपको अकेले xmlrpc फ़ाइल पर भरोसा नहीं करना चाहिए। परीक्षण wp-feed.phpबेहतर है।
FUXIA

6

URL के साथ जोड़ें ?page_id=-1और उसके लिए HTTP HEAD अनुरोध करें।

स्वयं-स्थापित वर्डप्रेस ब्लॉगों पर, इसका परिणाम 404 प्रतिक्रिया होगी।

Wordpress.com ब्लॉग पर, इसका परिणाम 301 प्रतिसाद होगा (जो कि अनुप्रेषित का अनुसरण करने पर 200 प्रतिसाद पर समाप्त होता है)।

गैर-वर्डप्रेस साइटों पर, आपको 200 प्रतिक्रिया मिलनी चाहिए (क्वेरी स्ट्रिंग के बिना मूल URL मानकर आपको 200 दिया गया) - क्वेरी स्ट्रिंग को कोई फर्क नहीं पड़ना चाहिए।

इसके लिए HEAD अनुरोध के साथ उदाहरण http://blog.stackoverflow.com/2011/03/a-new-name-for-stack-overflow-with-surprise-ending/?page_id=-1:

HTTP/1.1 404 Not Found
Server: Apache/2.2.9 (Ubuntu) DAV/2 PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g
Content-Encoding: gzip
Vary: Cookie,Accept-Encoding
Cache-Control: no-cache, must-revalidate, max-age=0
Last-Modified: Thu, 07 Jun 2012 08:53:01 GMT
Date: Thu, 07 Jun 2012 08:53:01 GMT
Keep-Alive: timeout=15, max=100
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Pragma: no-cache
Connection: Keep-Alive
X-Powered-By: PHP/5.2.6-2ubuntu4.2
X-Pingback: http://blog.stackoverflow.com/xmlrpc.php
Content-Type: text/html; charset=UTF-8

उदाहरण के लिए एक HEAD अनुरोध के साथ http://dailycrave.wordpress.com/2012/06/01/three-cheese-grilled-pizza/?page_id=-1(अनुप्रेषित बंद का पालन करें):

HTTP/1.1 301 Moved Permanently
X-Pingback: http://dailycrave.wordpress.com/xmlrpc.php
Server: nginx
Expires: Wed, 11 Jan 1984 05:00:00 GMT
X-Hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.
Location: http://dailycrave.wordpress.com/2012/06/01/three-cheese-grilled-pizza/
Pragma: no-cache
Cache-Control: no-cache, must-revalidate, max-age=60
Connection: close
Last-Modified: Thu, 07 Jun 2012 09:01:09 GMT
Content-Type: text/html; charset=UTF-8
Date: Thu, 07 Jun 2012 09:01:09 GMT

(एक्स-हैकर ईस्टर अंडे पर ध्यान दें!)

यदि आप wordpress.com ब्लॉग के लिए 301 रीडायरेक्ट का पालन करते हैं, तो आप इसे समाप्त करते हैं:

HTTP/1.1 200 OK
Server: nginx
Vary: Accept-Encoding, Cookie
Last-Modified: Thu, 07 Jun 2012 09:48:26 GMT
Cache-Control: max-age=172, must-revalidate
Connection: close
Date: Thu, 07 Jun 2012 09:50:34 GMT
Transfer-Encoding: Identity
Content-Encoding: gzip
Link: <http://wp.me/pXGqK-27g>; rel=shortlink
X-Pingback: http://dailycrave.wordpress.com/xmlrpc.php
Content-Type: text/html; charset=UTF-8
X-Nananana: Batcache
X-Hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.

http://wp.me/URL वाले "लिंक" हेडर पर ध्यान दें , जो सभी wordpress.com होस्ट किए गए ब्लॉगों के लिए सामान्य लगता है और उन्हें पहचानने के लिए इस्तेमाल किया जा सकता है।

मेरा मानना ​​है कि यह काम करता है क्योंकि ?page_id=-1URL में पास होना URL सेगमेंट से डिफ़ॉल्ट रूटिंग को ओवरराइड करता है। -1 की आईडी के साथ एक पेज नहीं होगा, और इसलिए इसके बजाय 404 / रीडायरेक्ट परोसा जाता है।


2
मैं कल्पना करता हूं कि ऐसे URL पर किसी भी साइट को पुनर्निर्देशित या 404 किया जा सकता है, यहाँ क्या व्यवहार विशिष्ट है और WP के रूप में साइट की पहचान करता है?
दुर्लभ

@ रैस्ट हां - यह चेतावनी है। साइटों को इसे बिगाड़ना संभव है, और कुछ ऐसे हो सकते हैं जो page_idपहले से ही चर का उपयोग करते हैं। हेडर का उपयोग करके किसी भी प्रकार का पता लगाने का तरीका संभवतः खराब हो सकता है, इसलिए मुझे नहीं लगता कि इसके बारे में बहुत चिंता करने योग्य है। जो सिर्फ कस्टम CMS के लिए झूठी सकारात्मकता छोड़ देता है। मैं एक अधिक वर्डप्रेस-विशिष्ट चर के बारे में नहीं सोच सकता था, जो कहीं और इस्तेमाल किए जाने की संभावना कम होगी। वहाँ एक है?
निक

3

सभी वर्डप्रेस इंस्टॉलेशन पर न तो wp-super-cache उपलब्ध है, न ही URL में कोई निश्चित प्रारूप है। जबकि पर्मलिंक सेटिंग्स पृष्ठ URL योजनाओं के लिए कुछ निश्चित सेटिंग्स देते हैं जिनका उपयोग किया जा सकता है, कोई भी किसी भी कस्टम URL योजना का उपयोग कर सकता है। उदाहरण के लिए, यदि कोई केवल URL में केवल पृष्ठ / पोस्ट नाम का उपयोग करने का निर्णय लेता है, तो यह एक कम या ज्यादा असंभव है कि क्या यह एक Wordpress वेबसाइट है।

Xmlrpc की उपस्थिति का पता लगाने के लिए इस्तेमाल किया जा सकता है, लेकिन फिर से, इसे अक्षम किया जा सकता है।

और अंत में, भले ही आप URL पर पूरी तरह से काम करते हों, फिर भी यह पता लगाना 100% संभव नहीं है कि पेज वर्डप्रेस का उपयोग करके बनाया गया है या नहीं। यह सब थीम टेम्पलेट पर निर्भर करता है और इसे कैसे विकसित किया जाता है।

एक काफी विश्वसनीय तरीका उपस्थिति wp-login और wp-admin की तलाश करना है। लेकिन यहां तक ​​कि इन्हें स्थानांतरित भी किया जा सकता है। मैं इस तरह के लिए जाना था, हालांकि।


1

टिप्पणियों के दो विकल्प, अपना वर्डप्रेस हेडर सेट करें। इसे अपने विषय के कार्यों में छोड़ दें।

add_action('template_redirect', 'add_wp_header');
function add_wp_header(){

header('Type: WordPress');
}

WP स्कैन फिंगरप्रिंट (रूबी), यह कई चरणों के माध्यम से कोशिश करता है और यह पता लगाने के लिए कि क्या वर्डप्रेस का उपयोग किया जा रहा है जैसे कि प्लगइन निर्देशिका, थीम नाम, मेटा टैग, रीडमी, आदि की तलाश है (मुझे नहीं पता कि यह वास्तव में कितना सही है। )। http://code.google.com/p/wpscan/source/browse/#svn%2Ftrunk%2Flib%2Fwpscan


0

कैसे उपसर्ग wp के साथ शुरू होने वाली फ़ाइलों में से एक के लिए एक सिर अनुरोध भेजने के बारे में-। आदर्श रूप से wp-login.php देखें। यदि यह मौजूद है कि वेबसाइट वर्डप्रेस चला रही है।


wp-login.phpएक उप फ़ोल्डर में स्थित हो सकता है।
यूजीन मनुइलोव

इसे पुनर्निर्देशित भी किया जा सकता है और इसलिए इसका नाम बदला गया।
kaiser
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.