爬虫之抓包教程

在初学的爬虫过程中,很多人还不知道如何抓包,怎样子抓包才能获取到所需要的信息。为了纪念【宏彦获水】成语初次面世,特地用【百度搜索】写下一篇作者常用工具的抓包教程,以供大家参考。

抓包过程中,一般是 get 的抓包和 post 抓包,其中 get 抓包分为:普通get、带参数get、json抓包,其中 json抓包是重中之重。而post一般是登陆所用,当然也有可能是传参,这里只讲登陆的post,传参的和登陆的情况一致。

软件准备

作者用的抓包软件为:

  1. firefox 32.0 浏览器
  2. firebug 浏览器插件
  3. httpfox 浏览器插件

为什么要使用 firefox 浏览器,因为它的插件很丰富;为什么要使用 32.0 版本的插件,因为老版本支持的多,很多优秀的插件现在不更新了,不支持新的浏览器版本,所以使用老的版本

而且,作者平时习惯使用 chrome 浏览网页,所以需要一款 平时不常用的浏览器 来作为抓包工具,因为抓包过程中一直需要清除浏览的 cookie 和所记录的登陆信息,来保证浏览器是干净,用来模拟爬虫第一次打开网页。

如果需要下载上述软件,可以关注公众号【TTybai】,后台回复【抓包软件】就能下载。

将插件拖入浏览器就能安装,安装完成后显示:

image

get请求

普通get

首先开firefox浏览器,需要清除所有浏览器痕迹,步骤为:

点击右上角菜单:

image

点击历史记录:

image

清除最近所有历史纪录:

image

清除时间范围选择全部,清除的项目也全部打勾:

image

这样子浏览器就很干净了,和爬虫代码一样什么都没访问过,都是第一次访问页面,没有任何 cookiereferer

按下 F12 ,这时候就启动了 firebug

image

点击 firebug保持,防止网页重定向跳转,导致上一次的记录被覆盖,也可以打开 httpfox 点击 start,也能记录所有的请求和返回:

image

打开【宏彦获水】首页,即在地址栏输入 baidu.com,得到网页如下:

image

可以看到箭头所指的位置是上一次打开的页面,而下面是新跳转的页面,可以看到我们请求【宏彦获水】首页的头部是很干净的:

image

这样就是一次 get 请求,那么代码可以写成如下样式:

import requests

header = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
          "Accept-Encoding": "gzip, deflate",
          "Accept-Language": "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",
          "Connection": "keep-alive",
          "Host": "www.baidu.com",
          "User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0"}

url = "https://www.baidu.com"

response = requests.get(url=url, headers=header)
print(response.text)

带参数get

继续在当前页面,搜索框里面输入【宏彦获水】,点击搜索,可以看到 firebug 有一条分隔线,这个就是再次请求记录的网址,分割线下面的第一个网址就是新的get到的页面:

image

而百度是预加载的,所以她真正请求网页的是上一条网址:

image

这个是带参数的get请求,点开看到请求的参数如下:

image

头部变成:

image

这时候携带参数和模拟头部抓取的代码如下:

import requests

header = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
          "Accept-Encoding": "gzip, deflate",
          "Accept-Language": "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",
          "Connection": "keep-alive",
          "Host": "www.baidu.com",
          "User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0",
          "Referer": "https://www.baidu.com/",
          "X-Requested-With": "XMLHttpRequest",
          "is_referer": "https://www.baidu.com/",
          "is_xhr": 1}

Cookie = "BAIDUID=55110890A72F586AB6F9250E6B537B38:FG=1; BIDUPSID=55110890A72F586AB6F9250E6B537B38; PSTM=1562402692; delPer=0; BD_HOME=0; H_PS_PSSID=26524_1430_21124_29238_28519_29099_28837_29220_26350_29439_20718; BD_UPN=13314552; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598"

url = "https://www.baidu.com/s"

data = {"is_xhr": 26926, "_ss": 1, "clist": "", "csor": 4, "f": "8", "hsug": "", "ie": "utf-8",
        "isbd": 1,
        "isid": "FC732FA4D3E18100", "mod": 1, "pstg": 2, "rqlang": "cn", "rsv_bp": 1, "rsv_enter": 1, "rsv_idx": 1,
        "rsv_n": 2, "rsv_pq": "88b75ff80009a917",
        "rsv_sid": "1428_21114_18559_29237_28518_29098_28837_29220", "rsv_sug3": 1,
        "rsv_t": "0529fGcc/esWnAo0czXjQnp/r0XUo7ce8iBYE2NW0OPFPxSPNN1fcPBQyFQ", "tn": "baidu",
        "wd": "宏彦获水"}

response = requests.get(url=url, headers=header, params=data)

print(response.text)

json抓包

一般网页都会用 json 返回数据到前端,而爬虫最和谐的除了抓取 API之外,就是抓取 json了,下面介绍抓取【宏彦获水】的 json

这里首先清除浏览器所有信息,再在地址栏输入 baidu.com,然后当我们把【宏彦获水】输入到搜索框,但是还没点百度一下的时候,网页会出现联想词:

image

现在就是要把这些联想词抓出来。先要看网页请求了哪些信息,然后发现如下网址:

image

看到哪里有一个 josn ,这个就是网页中途留下的 json 字段了,现在要更改头部和参数把这个 json 抓下来,代码如下:

import requests

header = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
          "Accept-Encoding": "gzip, deflate",
          "Accept-Language": "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",
          "Connection": "keep-alive",
          "Host": "www.baidu.com",
          "User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0",
          "Referer": "https://www.baidu.com/",
          "X-Requested-With": "XMLHttpRequest",
          }

Cookie = "BAIDUID=D23D01C5827562E1F90368C32AFDD7C8:FG=1; BIDUPSID=D23D01C5827562E1F90368C32AFDD7C8; PSTM=1562420248; delPer=0; BD_HOME=0; H_PS_PSSID=1443_21098_29237_28519_29099_28832_29220_26350_29458; BD_UPN=13314552"

url = "https://www.baidu.com/sugrec?"

data = {"_": 1562420249391, "cb": "jQuery1102042318315264522366_1562420249389", "csor": 4, "from": "pc_web", "json": 1,
        "ie": "utf-8",
        "p": 3, "pre": 1, "prod": "pc", "req": 2, "sugsid": "1443,21098,29237,28519,29099,28832,29220,26350,29458",
        "wd": "宏彦获水"}

response = requests.get(url=url, headers=header, params=data)

print(response.text)

抓取到的返回页信息为:

jQuery1102042318315264522366_1562420249389({"q":"宏彦获水","p":false,"g":[{"type":"sug","sa":"s_1","q":"宏彦获水怎么回事"},{"type":"sug","sa":"s_2","q":"宏彦玩具"},{"type":"sug","sa":"s_3","q":"邯郸宏彦"},{"type":"sug","sa":"s_4","q":"唐山宏彦"},{"type":"sug","sa":"s_5","q":"宏彦 咸阳"},{"type":"sug","sa":"s_6","q":"河北宏彦集团"},{"type":"sug","sa":"s_7","q":"宏彦什么意思"}]})

一般网页抓取都是抓取 json 的多一点,直接抓取网页用正则解析的,除非是网页本身就是这么交互的,不然像一般大一点的网页,例如 淘宝、京东 等网站,都是i返回 json 的,如果在 firebug 中没看到,那么就要去 httpfox 里面去看,很多网页会隐藏这个 json 信息的

post请求

post 一般是登陆所用,这里首先清除浏览器所有信息,打开firebughttpfox,再在地址栏输入 baidu.com,点击右上角登陆,选择用户名登陆,然后随便输入一个账号密码,随便输入:

image

最后点击登陆,可以看到出现了一个 post 请求:

image

可以看到 post 请求发送了很多参数,如果登陆成功就可以获取其 cookie ,或者得到它返回的东西,这里就不展开了,百度登陆在网上太多示例。

总结

抓包喜欢用 firefoxfirebug ,当然也可以用 chrome 自带的也很棒。一般的抓包思路就是这样,如果需要下载软件请关注公众号【机器学习和大数据挖掘】,后台回复【抓包软件】即可获取下载地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,474评论 1 45
  • HTTP基本原理 URI、URL、URN(Uninform Resource) URI(Identifier):统...
    GHope阅读 2,076评论 2 26
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,580评论 0 7
  • 上网原理 1、爬虫概念 爬虫是什麽? 蜘蛛,蛆,代码中,就是写了一段代码,代码的功能从互联网中提取数据 互联网: ...
    riverstation阅读 8,050评论 1 2
  • 18年间很长一段时间里,我对大学的期望是极高的,我向往大学的一切,学习,生活,感情等等一系列的事情。期望值的...
    咕叽咕叽小可昵阅读 286评论 8 3