nodejs讀寫cookie(nodejs讀寫Word)

本文目錄一覽:

nodejs怎麼設置cookie

var http = require(‘http’);

http.createServer(function (req, res) {

// 獲得客戶端的Cookie

var Cookies = {};

req.headers.cookie req.headers.cookie.split(‘;’).forEach(function( Cookie ) {

var parts = Cookie.split(‘=’);

Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || ” ).trim();

});

console.log(Cookies)

// 向客戶端設置一個Cookie

res.writeHead(200, {

‘Set-Cookie’: ‘myCookie=test’,

‘Content-Type’: ‘text/plain’

});

res.end(‘Hello World\n’);

}).listen(8000);

console.log(‘Server running at ‘);

如果去掉其中幾句,就是官方給出的例子,除了表明返回一個頁面多簡單外,一點用也沒有。

var http = require(‘http’);

http.createServer(function (req, res) {

res.writeHead(200, {‘Content-Type’: ‘text/plain’});

res.end(‘Hello World\n’);

}).listen(8000);

console.log(‘Server running at ‘);

我們通過http.createServer的回調來處理所有請求與響應,因此什麼有用的東西都在它們上面。Cookie位於req對象的headers對象上,為一個字元串,通常為了方便我們將它們轉換成一個對象。

寫入一個Cookie其實就是在首部設置一個鍵值對,上面是簡單方式,它實際上可以這樣:

res.writeHead(200, {

‘Set-Cookie’: [“aaa=bbb”,”ccc=ddd”,”eee=fff”],

‘Content-Type’: ‘text/plain’

});

但真正使用時,我們的Cookie並非這樣簡單的的格式:

Set-Cookie: =[; =]

[; expires=][; domain=]

[; path=][; secure][; HttpOnly]

console.log(‘Server running at ‘);

HttpOnly 屬性: 這是微軟對Cookie做的擴展。如果在Cookie中設置了”HttpOnly”屬性,那麼通過程序(JS腳本、Applet等)將無法讀取到Cookie信息,這樣能有效的防止XSS攻擊。

var http = require(‘http’);

http.createServer(function (req, res) {

// 獲得客戶端的Cookie

var Cookies = {};

req.headers.cookie req.headers.cookie.split(‘;’).forEach(function( Cookie ) {

var parts = Cookie.split(‘=’);

Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || ” ).trim();

});

console.log(Cookies)

// 向客戶端設置一個Cookie

res.writeHead(200, {

‘Set-Cookie’: ‘SSID=Ap4GTEq; Expires=Wed, 13-Jan-2021 22:23:01 GMT;HttpOnly ‘,

‘Content-Type’: ‘text/html’

});

res.end(‘Hello World\nscriptconsole.log(document.Cookie)/script’);

}).listen(8000);

console.log(‘Server running at ‘);

然後多刷幾次頁面,我們發現我們還能在控制台看到SSID=Ap4GTEq這個屬性,但在前端我們看不到它(當然在firebug中能看到)。

Secure屬性: 當設置為true時,表示創建的 Cookie 會被以安全的形式向伺服器傳輸,也就是只能在 HTTPS 連接中被瀏覽器傳遞到伺服器端進行會話驗證,如果是 HTTP 連接則不會傳遞該信息,所以不會被竊取到Cookie 的具體內容。同上,在客戶端我們也無法在document.Cookie找到被設置了Secure=true的Cookie鍵值對。Secure屬性是防止信息在傳遞的過程中被監聽捕獲後信息泄漏,HttpOnly屬性的目的是防止程序獲取Cookie後進行攻擊。我們可以把Secure=true看成比HttpOnly更嚴格的訪問控制。

path屬性: 指定可訪問Cookie的目錄。例如:”userId=320; path=/shop”;就表示當前Cookie僅能在shop目錄下使用。

domain屬性: 指定可訪問Cookie的主機名.主機名是指同一個域下的不同主機,例如:和gmail.google.com就是兩個不同的主機名。默認情況下,一個主機中創建的Cookie在另一個主機下是不能被訪問的, 但可以通過domain參數來實現對其的控制,其語法格式為:”name=value; domain=CookieDomain”;以google為例,要實現跨主機訪問,可以寫為: “name=value;domain=.google.com”;這樣,所有google.com下的主機都可以訪問該Cookie。

Expires屬性:指定過期時間,格式為”name=value;; expires=GMT_String”; 其中GMT_String是以GMT格式表示的時間字元串,超過這個時間,Cookie將消失,不可訪問。例如:如果要將Cookie設置為10天後過期,可以這樣實現:

簡單NodeJS爬蟲和使用cookie進行模擬登錄

       NodeJS做爬蟲也是很方便的。因為nodejs有HTTP模塊直接可以使用,而且還有很多簡單粗暴的庫可以即拿即用。

      首先,需要的庫文件,

      1、superagent 是個輕量的的 http 方面的庫,就像jquery的post,和get一樣,很簡單。

      2、cheerio 是一個服務端操作DOM的庫,簡直就是服務端的jquery。

     好的,我們需要抓取某個網站的題目。如下圖。這個系統下,及時是遊客狀態也是可以查看題目的,只是答案我們看不到。會顯示我沒有登錄。

現在我們有個需求,先抓取15頁,根據URL的參數可以頁數就是地址中 的P。並且要有本地cookie,獲取cookie的方法,最簡單的是,利用瀏覽器登錄網站之後,在控制台直接列印document.cookie,得到之後,複製進txt文本。用fs模塊讀取並轉換成字元串。在superagent請求時,把cookie傳進去。

好了,控制台已經不輸出「未登錄」,說明已經登錄成功了。

nodejs跨域怎麼獲取cookie

這個沒有辦法獲取到的。

瀏覽器的同源策略,是不允許跨域讀取cookie的。

而Nodejs是伺服器端,如果瀏覽器都不允許。伺服器自然就獲取不到跨域cookie的信息了。

原創文章,作者:S7E5J,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128993.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
S7E5J的頭像S7E5J
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相關推薦

  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向位元組流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29
  • Python載入Cookie錯誤解決方法用法介紹

    本文將從多個方面詳細闡述Python載入Cookie錯誤的解決方法,希望能對讀者有所幫助。 一、Cookie錯誤常見原因 1、Cookie過期:當Cookie過期時,載入Cooki…

    編程 2025-04-29
  • Cookie是後端生成的嗎?

    是的,Cookie通常是由後端生成並發送給客戶端的。下面從多個方面詳細闡述這個問題。 一、什麼是Cookie? 我們先來簡單地了解一下什麼是Cookie。Cookie是一種保存在客…

    編程 2025-04-28
  • 刪除多餘的Word空白頁

    本文將介紹如何在Word文檔中刪除多餘的空白頁。 一、檢查頁面邊距設置 在一些情況下,Word空白頁的存在可能是由於頁面邊距設置不當所致。請按照以下步驟檢查和調整頁面邊距設置: 1…

    編程 2025-04-28
  • Word英語連字元號怎麼打

    如果你在使用Word進行英文輸入的時候,需要輸入連字元(Hyphen),但是不知道怎麼打,本文將給出詳細的方法和示例。 一、連字元的使用 連字元(Hyphen)是英文中常用的標點符…

    編程 2025-04-27
  • Word編輯公式

    Word編輯公式是Microsoft Office軟體中一個非常實用的功能。本文將從多個方面對Word編輯公式進行詳細闡述,包括公式的插入、編輯、公式庫的使用以及常用的公式樣式 一…

    編程 2025-04-27
  • Python寫Word模板簡介

    Python可以用來生成Word文檔,讓你可以自動化生成報表、合同、申請表等文檔。本文將從多個方面詳細介紹Python寫Word模板的方法和技巧。 一、Word模板的結構 要生成W…

    編程 2025-04-27
  • Word轉Excel詳解

    一、使用Office插件 1、可以使用Office自帶的「將表格複製為Excel工作簿」插件。只需在Word中選中表格,點擊「插入」選項卡中的「對象」按鈕,在彈出的窗口中選擇「將表…

    編程 2025-04-25
  • Word下劃線不顯示怎麼辦

    一、檢查文本框選項 1、首先我們需要檢查文本框選項,可能是因為Word的文本框選項造成下劃線不顯示。操作步驟如下: 步驟1:選中要設置下劃線的文本; 步驟2:點擊「插入」選項卡,選…

    編程 2025-04-25
  • Word護眼色詳解

    一、什麼是Word護眼色 Word護眼色是一種適合長時間閱讀的柔和色調,不會對眼睛造成刺激和壓力。在Word軟體中,我們可以通過選擇合適的護眼色來調整頁面的色彩,使其更加柔和和舒適…

    編程 2025-04-25

發表回復

登錄後才能評論