golang 模擬瀏覽器 發(fā)送application/x-www-form-urlencoded的post請求

init

拉勾搜索頁面 : https://www.lagou.com/jobs/list_golang?city=%E6%9D%AD%E5%B7%9E&cl=false&fromSearch=true&labelWords=&suginput=
Ajax異步請求的頁面: https://www.lagou.com/jobs/positionAjax.json?city=%E6%9D%AD%E5%B7%9E&needAddtionalResult=false&isSchoolJob=0
糗事百科:https://www.qiushibaike.com/

問題描述

  1. Ajax異步加載娶耍。拉勾搜索頁面的source page 不像 糗事百科的 source page徘六,沒有要抓取的那些信息(如“GO開發(fā)工程師 1天前發(fā)布 10k-20k 經(jīng)驗1-3年 / 大屌劣浚”)犯戏,這些信息是Ajax異步加載的喻犁;對于異步加載的搜索結(jié)果頁动猬,無法像糗事百科那樣直接從source page中匹配想要的結(jié)果腔寡。
  2. 模仿瀏覽器發(fā)送post請求奈揍。Ajax異步請求的網(wǎng)址绅项,利用postman發(fā)送post請求紊册,總是返回系統(tǒng)繁忙。

解決辦法

問題1:google 瀏覽器按F12快耿,按一下一個空心圓帶斜杠的按鈕(“clear”)囊陡,先將頁面的結(jié)果清楚,然后刷新頁面掀亥,然后查看加載出來的那些網(wǎng)址的Header撞反,在General中Request Method為POST的,差不多就是Ajax請求數(shù)據(jù)的真正地址搪花。找到這個地址后遏片,看“Preview”,就能查看response的格式嘹害。
問題2:

  1. 端正態(tài)度。其實找到Ajax請求的真正地址后吮便,用postman就應(yīng)該能模擬出這個Ajax請求笔呀,我之所以失敗,是因為我太懶了髓需,只填了幾個Request Headers许师。后來我把那些Request Headers中的項全添加到Postman中,就加載出來了。然后這個事情啟發(fā)了我僚匆,只要把Request Headers/Query String Parameters/Form Data 全部實現(xiàn)微渠,無論使用什么,都應(yīng)該返回正確的結(jié)果才對咧擂。
  2. FormData 要注意一下數(shù)據(jù)格式逞盆,一般來說Ajax默認請求的格式,是“application/x-www-form-urlencoded”屋确。由此我產(chǎn)生了一個疑問纳击,post都有幾種數(shù)據(jù)格式?對于這個問題攻臀,我找到一篇很好的文章焕数,https://imququ.com/post/four-ways-to-post-data-in-http.html

代碼實現(xiàn)

type RequestInfo struct {
    Url string
    Data map[string]string //post要傳輸?shù)臄?shù)據(jù)刨啸,必須key value必須都是string
    DataInterface map[string]interface{}
}
//適用于 application/x-www-form-urlencoded
func (this RequestInfo) postUrlEncoded()([]byte,error){
    client := &http.Client{} 
//post要提交的數(shù)據(jù)
    DataUrlVal := url.Values{}
    for key,val := range this.Data{
        DataUrlVal.Add(key,val)
    }
    req,err := http.NewRequest("POST",this.Url,strings.NewReader(DataUrlVal.Encode()))
    if err != nil{
        return nil,err
    }
//偽裝頭部
    req.Header.Set("Accept","application/json, text/javascript, */*; q=0.01")
    req.Header.Add("Accept-Encoding","gzip, deflate, br")
    req.Header.Add("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4")
    req.Header.Add("Connection","keep-alive")
    req.Header.Add("Content-Length","25")
    req.Header.Add("Content-Type","application/x-www-form-urlencoded")
    req.Header.Add("Cookie","user_trace_token=20170425200852-dfbddc2c21fd492caac33936c08aef7e; LGUID=20170425200852-f2e56fe3-29af-11e7-b359-5254005c3644; showExpriedIndex=1; showExpriedCompanyHome=1; showExpriedMyPublish=1; hasDeliver=22; index_location_city=%E5%85%A8%E5%9B%BD; JSESSIONID=CEB4F9FAD55FDA93B8B43DC64F6D3DB8; TG-TRACK-CODE=search_code; SEARCH_ID=b642e683bb424e7f8622b0c6a17ffeeb; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1493122129,1493380366; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1493383810; _ga=GA1.2.1167865619.1493122129; LGSID=20170428195247-32c086bf-2c09-11e7-871f-525400f775ce; LGRID=20170428205011-376bf3ce-2c11-11e7-8724-525400f775ce; _putrc=AFBE3C2EAEBB8730")
    req.Header.Add("Host","www.lagou.com")
    req.Header.Add("Origin","https://www.lagou.com")
    req.Header.Add("Referer","https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=")
    req.Header.Add("X-Anit-Forge-Code","0")
    req.Header.Add("X-Anit-Forge-Token","None")
    req.Header.Add("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
    req.Header.Add("X-Requested-With","XMLHttpRequest")
//提交請求
    resp,err := client.Do(req)
    defer resp.Body.Close()
    if err != nil{
        return nil,err
    }
//讀取返回值
    result,err := ioutil.ReadAll(resp.Body)
    if err != nil{
        return nil,err
    }
    return result,nil
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末堡赔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子设联,更是在濱河造成了極大的恐慌善已,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件离例,死亡現(xiàn)場離奇詭異换团,居然都是意外死亡,警方通過查閱死者的電腦和手機宫蛆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門艘包,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人耀盗,你說我怎么就攤上這事想虎。” “怎么了叛拷?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵舌厨,是天一觀的道長。 經(jīng)常有香客問我忿薇,道長裙椭,這世上最難降的妖魔是什么躏哩? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮揉燃,結(jié)果婚禮上震庭,老公的妹妹穿的比我還像新娘。我一直安慰自己你雌,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布二汛。 她就那樣靜靜地躺著婿崭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肴颊。 梳的紋絲不亂的頭發(fā)上氓栈,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音婿着,去河邊找鬼授瘦。 笑死,一個胖子當著我的面吹牛竟宋,可吹牛的內(nèi)容都是我干的提完。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼丘侠,長吁一口氣:“原來是場噩夢啊……” “哼徒欣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜗字,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤打肝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挪捕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粗梭,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年级零,在試婚紗的時候發(fā)現(xiàn)自己被綠了断医。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡妄讯,死狀恐怖孩锡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亥贸,我是刑警寧澤躬窜,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站炕置,受9級特大地震影響荣挨,放射性物質(zhì)發(fā)生泄漏男韧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一默垄、第九天 我趴在偏房一處隱蔽的房頂上張望此虑。 院中可真熱鬧,春花似錦口锭、人聲如沸朦前。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽韭寸。三九已至,卻和暖如春荆隘,著一層夾襖步出監(jiān)牢的瞬間恩伺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工椰拒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晶渠,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓燃观,卻偏偏與公主長得像褒脯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仪壮,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理憨颠,服務(wù)發(fā)現(xiàn),斷路器积锅,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 1 前言 作為一名合格的數(shù)據(jù)分析師爽彤,其完整的技術(shù)知識體系必須貫穿數(shù)據(jù)獲取、數(shù)據(jù)存儲缚陷、數(shù)據(jù)提取适篙、數(shù)據(jù)分析、數(shù)據(jù)挖掘箫爷、...
    whenif閱讀 18,052評論 45 523
  • 導讀: 現(xiàn)在的web和移動開發(fā)嚷节,常常會調(diào)用服務(wù)器提供restful接口進行數(shù)據(jù)請求,為了調(diào)試虎锚,一般會先用工具進行測...
    常大鵬閱讀 103,070評論 13 143
  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,171評論 0 7
  • 沒掌握頭發(fā)的畫法硫痰,畫得枯燥無味,缺乏韻律窜护。
    鳥琴y閱讀 190評論 2 1