Tam bir HTTP GET yapmadan bir WordPress URL’si mi tespit ediyorsunuz?


21

WordPress blog girişleri özel muamele veren bir oneboxing rutin yazmaya çalışıyorum. Böylece, içerikte basit, süslemesiz bir URL verilir.

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

Bunun, gördüğüm her URL’de tam bir HTTP GET’i yapmadan ideal bir WordPress kurulumu olduğunu nasıl anlarım?

En azından bazı URL'lerin çekişmesini engelleyen WordPress URL'leri için kesinlikle genel kurallar vardır . Bu durumda ...

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

Ancak bu da evrensel bir sabit değildir.

HTTP HEAD kullanarak bu URL'nin başlıklarına bakmayı denedim ve görüyorum:

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

Varlığına güvenmenin WP-Super-Cacheözellikle güvenilir olacağını düşünmüyorum ve yardımcı olacak başlıklarda gördüğüm tek şey bu, belki de bir WordPress kurulumunda sıfır ortak HTTP başlığı var?


Netleştirmek için - .org kendi kendine barındırılan kurulumlarla sadece ilgileniyor musunuz?
Rarst

tüm WordPress yüklemeleri - herhangi bir WordPress yüklemesi
Jeff Atwood

1
İlişkili RSS feed sayfasındaki 200'ü kontrol edebilir misiniz?
Kevin Burke

1
Neden tam olarak bunu istiyorsun? Yanlış pozitifler veya yanlış negatifler daha mı kötü? Sayfaları Wordpress'te üreten ve periyodik olarak tüm sayfalara ait statik bir dökümü veren bir siteye ne dersiniz? (örneğin thespace.org )
rjmunro

Yanıtlar:


17

Tecrübelerime ve hızlı kod araştırmaya göre, WP'nin kendisini başlıklarda tanımlaması için kasıtlı bir yol yoktur . Ancak, yeterince farklı görünen ve özelleştirilmesi muhtemel olmayan bazıları da var.

/wp-login.php.Org kurulumu için aşağıdakileri içerecek olan HEAD :

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

Ve .com için:

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

Çerez adı, TEST_COOKIEsabit tanımlanarak özelleştirilebilir , ancak WP Cookie checkdize çekirdekte kodlanmıştır, bunun yanında set_cookie()dosyanın kaynağında da çağrılır.

Yer bulmak wp-login.phpiçin bazı URL kısayolları vardır ( wp_redirect_admin_locations()WP 3.4'ten beri uygulanmaktadır (bkz. Bilet # 19607 ):

/loginsitenin kökü , bulunduğu yere 302yönlendirir wp-login.php.

Bu nedenle, WP kurulur ve alt dizine sınırlandırılırsa, sitenin kökünü yönetmek için kullanılmadan güvenilir bir şekilde tespit edilemeyen tek senaryo .


12

Aynı dizine (alt dizin kurulumlarında bile) HEADistek gönder . WordPress'te dizeyi içeren cevap olarak bir başlık alacaksınız ./wp-feed.php/xmlrpc.phpLocationfeed

Örneğinizde blog.stackoverflow.comşunları alırsınız:

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.phpTek başına bir dosyanın çıplak varlığı tek başına yeterli değildir. Herhangi biri bu ismi bir dosyaya verebilir.

Uyarı: X-PingbackBaşlık filtreleme ile devre dışı bırakılabilir 'wp_headers'. Bu yüzden benim önerim kurşun geçirmez değil.

İlgili: Bir Sitenin WordPress Kullanmasıyla İlgili Gerçekleri Gizlemek İçin Atılması Gereken Adımlar?


Başlıkta görmek X-Pingback:http://example.com/xmlrpc.phpbir WP blogu olduğunu varsaymak için yeterince güçlü bir sinyal olmaz mıydı?
Jeff Atwood

Bu, "default" wordpress yüklemeleri için işe yarar, ancak wordpress'i bu yöntemi zayıflatan bir alt dizinde de çalıştırabilirsiniz .
navitronic

1
@navitronic xmlrpc.phpher zaman görebildiğim wp-feed.phpkadarıyla aynı dizinde .
fuxia

1
X-Pingback, yalnızca WP değil, geri bildirim etkin olan herhangi bir kaynak için standart (ish) bir başlıktır.
NickFitz

@NickFitz Bu nedenle, yalnızca xmlrpc dosyasına güvenmemelisiniz. Test wp-feed.phpetmek daha iyi.
fuxia

6

URL'yi ekleyin ?page_id=-1ve bunun için bir HTTP HEAD isteği yapın.

Kendi kendine yüklenen WordPress bloglarında, bu 404 yanıtla sonuçlanacaktır.

Wordpress.com bloglarında bu, 301 yanıtla sonuçlanır (yönlendirmeyi izlerseniz 200 yanıtla sonuçlanır).

WordPress olmayan sitelerde, 200 yanıt almanız gerekir (sorgu dizesi olmadan orijinal URL'nin size 200 verdiğini varsayarsak) - sorgu dizgisinde bir fark olmamalıdır.

Bir HEAD isteğiyle ilgili örnek 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

Bir HEAD isteğine ilişkin örnek http://dailycrave.wordpress.com/2012/06/01/three-cheese-grilled-pizza/?page_id=-1(yönlendirmeleri izleyin)

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

(X-Hacker paskalya yumurtasına dikkat edin!)

Wordpress.com blogu için 301 yönlendirmesini takip ederseniz, bununla sonuçlanır:

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/Tüm wordpress.com tarafından barındırılan blogların tümü için ortak görünen ve bunları tanımlamak için kullanılabilecek URL’yi içeren "Bağlantı" başlığını not edin.

Bunun işe yaradığına inanıyorum, çünkü ?page_id=-1URL’yi iletmek , URL segmentlerinden gelen varsayılan yönlendirmeyi geçersiz kılar. -1 kodlu bir sayfa olmayacak ve bu nedenle bunun yerine 404 / yönlendirilecek.


2
Dışarıdaki herhangi bir sitenin bu URL’de yönlendirme veya 404 olabileceğini, buradaki davranışların hangi spesifik ve WP olarak tanımlandığını hayal ediyorum?
Rarst

@Rarst Evet - bu uyarıdır. Sitelerin bunu taklit etmesi mümkündür ve page_iddeğişkeni zaten kullananlar olabilir . Başlıkları kullanan herhangi bir algılama yöntemi muhtemelen sahte olabilir, bu yüzden bunun için çok endişelenmeye değer olduğunu sanmıyorum. Sadece özel CMS için yanlış pozitif bırakır. Başka bir yerde kullanılması daha az muhtemel olan daha WordPress'e özgü bir değişken düşünemiyorum. Bir tane var mı?
Nick,

3

Ne wp-super-cache, tüm wordpress kurulumlarında kullanılamaz, ne de URL’lerde sabit bir format yoktur. Permalinks ayarları sayfası kullanılabilecek URL şemaları için bazı sabit ayarlar verirken, herkes herhangi bir özel URL şemasını kullanabilir. Örneğin, herhangi biri URL’de yalnızca sayfa / posta adı kullanmaya karar verirse, bir Wordpress web sitesi olup olmadığını anlamak neredeyse imkansızdır.

Xmlrpc'nin varlığı tespit etmek için kullanılabilir, ancak yine de bu devre dışı bırakılabilir.

Ve son olarak, URL’ye tam olarak ulaşsanız bile, sayfanın wordpress kullanılarak oluşturulmuş olup olmadığını tespit etmek hala% 100 mümkün değildir. Her şey tema şablonuna ve nasıl geliştirildiğine bağlıdır.

Oldukça güvenilir bir yol wp-login ve wp-admin varlığını aramaktır. Ancak bunlar bile hareket ettirilebilir. Yine de bu tarafa giderdim.



0

Wp- ön ekiyle başlayan dosyalardan birine kafa isteği göndermeye ne dersiniz? İdeal olarak wp-login.php dosyasına bakın. Varsa, web sitesi WordPress kullanıyor demektir.


wp-login.phpbir alt klasörde bulunabilir.
Eugene Manuilov

Ayrıca yeniden yönlendirilebilir ve bu nedenle yeniden adlandırılabilir.
kaiser
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.