# HTTP Challenge ## lv11 > The Origin request header indicates where a request originates from. `Origin header` 用來說明 request 來源,但可以透過自己修改它的內容來做到偽裝的目的。 ```javascript= const request = require('request') const baseUrl = 'https://lidemy-http-challenge.herokuapp.com/api/v3' const options = { url: `${baseUrl}/hello`, headers: { Origin: 'lidemy.com' } } function callback(error, response, body) { if (error) { console.log('發生錯誤:', error) return } console.log(body) } request(options, callback) ``` ## lv12 這題是直接靠開發者工具解的,根據題目送出 request 後得到"我已經把運送要用的 token 給你囉,請你仔細找找"這句話,重新整理然後從開發者工具找到 token。 這題我用 request module 所收到的 response header,長這樣,反而看不到跟瀏覽器出現的 token @@ 好奇怪 ```javascript= const request = require('request') const baseUrl = 'https://lidemy-http-challenge.herokuapp.com/api/v3' const options = { url: `${baseUrl}/deliver_token` } function callback(error, response, body) { if (error) { console.log('發生錯誤:', error) return } console.log(response) } request(options, callback) ``` ``` headers: { server: 'Cowboy', connection: 'close', 'x-powered-by': 'Express', 'content-type': 'text/plain; charset=utf-8', date: 'Wed, 05 May 2021 03:17:16 GMT', 'content-length': '66', via: '1.1 vegur' } ``` ## lv13 題目要求要從菲律賓送出 request,去網路找個 Proxy 然後送出 request 之後拿到 token。 ```javascript= const request = require('request') const baseUrl = 'https://lidemy-http-challenge.herokuapp.com/api/v3' const options = { url: `${baseUrl}/logs`, headers: { 'X-Forwarded-For':'122.55.250.90' } } function callback(error, response, body) { if (error) { console.log('發生錯誤:', error) return } console.log(response) } request(options, callback) ``` ## lv14 這題不清楚題目想要做甚麼,直接看提示:「伺服器是怎麼辨識是不是 Google 搜尋引擎的?仔細想想之前我們怎麼偽裝自己是 IE6 的」,也就是說要怎麼讓圖書館的伺服器知道送過來的 request 是來自 google 搜尋引擎。 那這樣看來題目的意思應該是想表達說,當使用者對 google server 送出 reuqest,google server 如何找到對應的圖書館伺服器拿資料這件事,然後回傳給使用者這件事,也就是說我們要扮演的角色是 google server。 最後找到[Googlebot](https://developers.google.com/search/blog/2019/10/updating-user-agent-of-googlebot)這個東西的 UA,送出 requetst,拿到 token。 > Googlebot is the web crawler software used by Google, which collects documents from the web to build a searchable index for the Google Search engine. BY WIKI ```javascript= const request = require('request') const baseUrl = 'https://lidemy-http-challenge.herokuapp.com/api/v3' const options = { url: `${baseUrl}/index`, headers: { 'User-Agent':'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' } } function callback(error, response, body) { if (error) { console.log('發生錯誤:', error) return } console.log(response) } request(options, callback) ```