国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片

Categories


Tags


JavaScript解析:讓搜索引擎看到更真實的網(wǎng)頁

長期以來,站長們選擇使用JavaScript來實現(xiàn)網(wǎng)頁的動態(tài)行為,這樣做的原因是多種多樣的,如加快頁面的響應速度、降低網(wǎng)站流量、隱藏鏈接或者嵌入廣告等。由于早期的搜索引擎沒有相應的處理能力,導致在索引這類網(wǎng)頁上往往出現(xiàn)問題,可能無法收錄有價值的資源,也可能出現(xiàn)作弊。

引入JavaScript解析的目的,正是為了解決上述兩方面的問題,其結(jié)果也就是使搜索引擎可以更為清晰的了解用戶實際打開該網(wǎng)頁時看到的效果。比如有些網(wǎng)站會將用戶評論、評分等信息從網(wǎng)頁HTML中抽離,利用JavaScript甚至AJAX等方法在頁面被打開的時候動態(tài)顯示出來,早期的搜索引擎此時能處理到的頁面內(nèi)容就是缺失的,由此會進一步影響對該頁面索引價值的判斷。

要引入JavaScript解析,需要考慮本身的設計與實現(xiàn)、解析速度和對系統(tǒng)其它方面影響等因素,本文通過一些典型的案例來分析如何設計并實現(xiàn)一套網(wǎng)頁JavaScript解析系統(tǒng),并簡要介紹這樣的系統(tǒng)對于搜索引擎其它部分的作用和影響。

一、發(fā)現(xiàn)頁面鏈接

一般來說,頁面鏈接都是以HTML中的A標簽形式存在,鏈接URL標記在href屬性中,但實際存在著一些網(wǎng)站會選擇更為“動態(tài)”的方式,較為常見的方式有兩種:一種是動態(tài)寫入或調(diào)整A標簽,另一種是在用戶點擊的時候觸發(fā)事件改變默認的鏈接打開方式。

1. 動態(tài)寫入或調(diào)整鏈接標簽

抽象的說,網(wǎng)頁要實現(xiàn)這樣的效果,乃至后文描述的其它效果,與把大象放入冰箱極為類似,分為三步:找到要寫入/修改的目標(找到大象),準備好要寫入/修改的內(nèi)容(打開冰箱門),執(zhí)行寫入/修改(把它放進去)。

這三步操作映射到JavaScript上,就是先后調(diào)用三組標準的瀏覽器功能函數(shù):頁面元素定位、數(shù)據(jù)準備以及頁面修改。那么,JavaScript解析的工作就是同樣提供出這樣的函數(shù),隨著被站長的JavaScript代碼調(diào)用自然的發(fā)現(xiàn)相應的內(nèi)容和行為。

分析至此,所需實現(xiàn)的函數(shù)也就基本確定了,其中較為簡單的包括:

document.getElementById // 定位

document.getElementsByTagName // 定位

document.getElementsByClassName // 定位

node.[firstChild/nextSibling/previousSibling/parentNode] // 定位

document.[createElement/createTextNode] // 創(chuàng)建鏈接

node.[appendChild/insertBefore/innerHTML=?] // 寫入內(nèi)容

element.getAttribute, element.setAttribute // 設置屬性

element.href = ? // 設置屬性

至于要寫入的內(nèi)容,可能是以數(shù)組等形式保存在JavaScript種,也可能是使用AJAX動態(tài)加載。前者屬于JavaScript語言的內(nèi)置功能,此處不再復述;后者是一個單獨的話題,會在后文專門討論。

2. 點擊時觸發(fā)事件改變默認的鏈接打開方式

頁面這樣做的原因不一,有的是為了隱藏鏈接,有的是為了實現(xiàn)彈出窗口,有的則是為了程序拼接URL,還有的是做檢查看是否應該打開鏈接等等。但所有這些原因都對應著同樣的實現(xiàn)方法:添加click事件。

添加click事件的方法有三種:

將A標簽的href屬性設置為“javascript:func(…)”的形式

設置A標簽的onclick屬性,設置為onclick=”js_code” 的形式

調(diào)用事件綁定函數(shù),如my_link_node.addEventListener(‘click’, func, false)

支持這三種方法本身是較為簡單的,需要注意的地方在于如何觸發(fā)這樣的click事件,以及如何在觸發(fā)之后截獲目的URL。

對于觸發(fā)事件而言,首先需要收集到所有可能的click事件,而后再依次觸發(fā)。但對于每一個要觸發(fā)的click而言,實際觸發(fā)之前必須先檢查其是否還存在,這是由于在其之前的click事件很可能已經(jīng)把當前這個click刪除掉了。

要做到截獲URL,首先要實現(xiàn)相關的頁面跳轉(zhuǎn)函數(shù),既location.href = ?,window.open等。而后通過設置一系列標志,將本次點擊和頁面跳轉(zhuǎn)關連起來,如此也就得到了目標URL。

二、動態(tài)頁面內(nèi)容

頁面動態(tài)內(nèi)容是一種提升頁面加載速度、增強網(wǎng)站技術靈活性的手段,可以將那些會改變的內(nèi)容(如評論、評分等)抽離,使頁面分為靜態(tài)和動態(tài)兩部分:靜態(tài)內(nèi)容可以使用緩存等方法加快頁面顯示速度、降低網(wǎng)站流量;動態(tài)內(nèi)容則有格式簡單好生成的優(yōu)勢,同時也能節(jié)省流量。

另一方面,動態(tài)內(nèi)容也是加載廣告和內(nèi)容作弊的重要方法,最常見的就是寫入iframe,這對于早期搜索引擎而言有極大的隱蔽性。

在技術層次上,動態(tài)頁面內(nèi)容所需要的工作與上一節(jié)“動態(tài)寫入或調(diào)整A標簽”在很大程度上是相同的,這里需要增加的是經(jīng)典的“document.write”方法。

該方法是最早的JavaScript功能之一,用于向頁面直接寫入一段HTML代碼,至今仍在廣泛使用。對于該方法,早期的搜索引擎都有所支持,但方法基本限于字符匹配,僅能支持最直接的寫入一個JavaScript字符串的方式,對于稍微復雜的文本拼接顯得無能為力。但對于JavaScript解析而言,這段代碼終究是要符合語言規(guī)范的,因此就能做到完整支持,處理文本拼接、條件判斷和混淆代碼等各種情況。

這里還需要討論的一點是嵌套的document.write,也就是通過document.write寫入一個SCRIPT標簽,該標簽內(nèi)部是另一段document.write。這類問題在跳轉(zhuǎn)作弊頁面中屢見不鮮,對其支持就不只需要JavaScript解析,還需要HTML解析器能夠支持處理嵌套的HTML寫入功能,這里就不加以分析了。

通過上述方法,無論是網(wǎng)頁的主體信息,還是廣告或其它輔助信息,都會被暴露出來,從而更好的理解站長意圖。

三、網(wǎng)頁跳轉(zhuǎn)

網(wǎng)頁跳轉(zhuǎn)在有些情況下是達到頁面效果的必要選擇,但同樣會用于作弊。在技術上,多以下面兩種方式出現(xiàn):

直接調(diào)用頁面跳轉(zhuǎn)函數(shù)

針對搜索引擎的UA、referer等調(diào)用頁面跳轉(zhuǎn)函數(shù)

這里要實現(xiàn)識別,最核心的就是實現(xiàn)頁面跳轉(zhuǎn)函數(shù):location對象。由于這是技術上唯一的JavaScript跳轉(zhuǎn)函數(shù),所以無論頁面的JavaScript如何撰寫如何混淆,最終都會調(diào)用該函數(shù)。因此,盡管不同頁面的跳轉(zhuǎn)代碼看上去五花八門,但識別出來卻是簡單的。

四、關于AJAX

AJAX是極為常見的網(wǎng)頁技術,根本上說就是在網(wǎng)頁顯示期間,動態(tài)的從互聯(lián)網(wǎng)上獲取一段數(shù)據(jù)(可能是HTML也可能是其它),經(jīng)過處理后加以顯示。

對于該技術,根本的工作并不在于XMLHttpRequest對象的實現(xiàn),而是在于對搜索引擎爬蟲架構(gòu)的影響。眾所周知,爬蟲抓取頁面,遍歷其鏈接,再依次抓取的形式設計的,其工作主要集中在調(diào)度和控制抓取壓力上,抓取器本身較為簡單,通常不具備抓取后即時執(zhí)行JavaScript并抓取AJAX 數(shù)據(jù)的能力,因此需要技術升級方可支持AJAX。

對抓取器的分析超出了本文的范圍,有興趣的讀者可以查看其它相關文獻。

總結(jié)

通過前面的案例分析,我們總結(jié)出了實現(xiàn)JavaScript解析所需要的基本工作,此外再增加一定的基礎性建設就能構(gòu)成一套較為完整的系統(tǒng)了。這里我們再次整理一下,將其分為三個部分:

1. 在HTML解析器中嵌入JavaScript語言引擎,語言引擎可以選擇V8、SpiderMonkey等成熟的開源方案。

2. 實現(xiàn)所需的功能函數(shù),具體可參考W3C的相關HTML和DOM規(guī)范。

3. 作為一個直接推論,需要收錄所謂的.js文件,這是JavaScript解析所需要“解析”的源代碼。

本文中介紹的功能僅是一部分較為常見的JavaScript功能,要讓搜素引擎真正看到實際的頁面還需要進一步實現(xiàn)其它需要的功能,此外還需要配合對HTML、CSS、圖片等資源的支持。

最后,對于希望使用JavaScript的站長來說,本文給出如下建議:

1. 不要使用過于復雜的JavaScript技術,這不利于搜索引擎的收錄

2. 不要阻止對.js文件的收錄,否則會限制JavaScript解析的能力

3. 合理的劃分站點的靜態(tài)部分和動態(tài)部分

作者:Lileding 來源:百度搜索研發(fā)部官方博客

來源:盧松松博客


Public @ 2017-02-23 16:17:18

域名注冊常見問題

1. 什么是域名注冊? 域名注冊是指向域名系統(tǒng) (DNS) 添加域名的過程。當您注冊一個域名時,您將擁有權(quán)利,可以在互聯(lián)網(wǎng)上使用該域名作為您的獨立身份和網(wǎng)址。 2. 如何選擇一個好的域名? 一個好的域名應當短小簡單和易于記憶,同時與您的網(wǎng)站或品牌相符并易于搜索。它也應該有一個合適的頂級域名 (TLD),如.COM、.NET、.ORG 或 .CN 等,以增加您的網(wǎng)站的可信度和可見性。 3.

Public @ 2023-03-29 14:50:38

關于網(wǎng)站、服務器受攻擊問題的相關說明

網(wǎng)站被攻擊一般有以下幾種原因:1. 盈利類網(wǎng)站容易被競爭對手攻擊。2. 被黑客敲詐勒索,要求支付“保護費”,否則會進行攻擊。3. 網(wǎng)站被黑客入侵,黑客在子目錄下放了“私服”、“減肥”類的非法網(wǎng)頁,從而被連帶攻擊。針對網(wǎng)站攻擊的防護措施:對于可能受攻擊的網(wǎng)站,建議使用我司高防線路機房的云主機,或者開啟第三方防護,比如百度云加速、加速樂來對網(wǎng)站進行防護,對于正規(guī)網(wǎng)站,要做好網(wǎng)站安全防護措施,防止被黑客

Public @ 2020-01-25 15:37:51

搜索引擎優(yōu)化 即 seo 網(wǎng)站內(nèi)部優(yōu)化與外部優(yōu)化具體有哪些

SEO的優(yōu)化包括網(wǎng)站內(nèi)部優(yōu)化和外部優(yōu)化兩個方面。 網(wǎng)站內(nèi)部優(yōu)化: 1. 關鍵詞優(yōu)化:合理布局關鍵詞,使網(wǎng)站更容易被搜索引擎收錄。 2. 內(nèi)容優(yōu)化:網(wǎng)站內(nèi)容的質(zhì)量必須高,符合搜索引擎的標準。這可以通過發(fā)布高價值的內(nèi)容,豐富內(nèi)容類型來實現(xiàn)。 3. 網(wǎng)站結(jié)構(gòu)優(yōu)化:網(wǎng)站應該具有良好的結(jié)構(gòu)和導航,使搜索引擎更容易訪問和理解網(wǎng)站。 4. 網(wǎng)頁代碼優(yōu)化:在網(wǎng)站開發(fā)中,應優(yōu)化代碼,降低加載時間,提升用戶

Public @ 2023-06-26 21:50:25

搜索引擎優(yōu)化技術,可分為兩大類:白帽技術與黑帽技術。

白帽技術是指使用合法、符合搜索引擎規(guī)范的方法來優(yōu)化網(wǎng)站,在提升搜索引擎排名的同時也提高用戶體驗。常見的白帽技術包括: 1. 關鍵詞優(yōu)化:選擇并優(yōu)化關鍵詞,包括在文章標題、內(nèi)容、URL等位置合理使用關鍵詞。 2. 內(nèi)容優(yōu)化:創(chuàng)建高質(zhì)量、原創(chuàng)、有價值的內(nèi)容,使用戶對網(wǎng)站感興趣并愿意分享。 3. 網(wǎng)站結(jié)構(gòu)優(yōu)化:改善網(wǎng)站的導航、URL結(jié)構(gòu)等,使搜索引擎更容易索引和理解網(wǎng)站內(nèi)容。 4. 外部鏈接優(yōu)化:獲取

Public @ 2023-07-21 09:50:48

更多您感興趣的搜索

0.427109s