Github traffic的原理是什麼?

https://github.com/blog/1672-introducing-github-traffic-analytics


題主好奇的應該是Github traffic是怎麼知道用戶的來源的?

上面的views顯然是個自增計數器,unique visitors則可以通過IP來歸類,這很顯然。

下面的Referring sites是因為用來瀏覽網頁的HTTP協議規定了:

點擊一個鏈接進入一個新網頁,要給鏈接對應的伺服器發送這個鏈接的來源信息。

14.36 Referer

The Referer[sic] request-header field allows the client to specify,
for the servers benefit, the address (URI) of the resource from
which the Request-URI was obtained (the "referrer", although the
header field is misspelled.) The Referer request-header allows a
server to generate lists of back-links to resources for interest,
logging, optimized caching, etc. It also allows obsolete or mistyped
links to be traced for maintenance. The Referer field MUST NOT be
sent if the Request-URI was obtained from a source that does not have
its own URI, such as input from the user keyboard.

Referer = "Referer" ":" ( absoluteURI | relativeURI )

Example:

Referer: http://www.w3.org/hypertext/DataSources/Overview.html

——Hypertext Transfer Protocol -- HTTP/1.1 140頁

所以當我們訪問:https://www.zhihu.com/people/lincanbin 的時候,瀏覽器除了發送請求方法和資源路徑外還向伺服器發送了來源(訪問的鏈接所在的頁面):

這樣服務就可以獲得這些數據進行分析了,這並不是什麼黑科技什麼的,事實上就是HTTP協議里定義的瀏覽器要實現的東西,而且所有統計網站都是這麼獲得這些數據的——因為這就是客戶端發送的。還有最後,學英語的同學要注意這個詞正確的寫法是Referrer,HTTP協議里的是個歷史遺留的筆誤。


這個統計數據應該是來自HTTP請求的"引用頁"

當我們從一個網頁 (A) 的鏈接打開github頁面時, 瀏覽器會把A的地址作為"引用頁" 傳給github的服務器. 然後github可以用這些信息來統計來源, 搜索關鍵字等.

比如我點你問題中鏈接打開github時, 引用頁 (HTTP請求中的Referer) 就是一個知乎域名的網址

https://1drv.ms/i/s!AhO2V7xmwKFljGLmm-efH2zmnhe2


推薦閱讀:

github的自動頁面生成問題?
如何管理Github上關注的項目?
聊聊GITHUB上的那些小工具01——代碼質量
一個git客戶端可以使用不同的郵箱賬號生成多個ssh key以使用多個伺服器,且相互間不影響?

TAG:GitHub | 計算機網路 |