使用requests抓取:
selenium抓取的效率实在是慢,没有办法,只能自己用requests实现一遍,分析思路花了好久.这里不表.
抓取的是m.facebook.com的内容,并非使用facebook的graph,web网页试了下,也可以抓取,因为m站和www站点是公用的cookies,可以来回切换
实现功能:
指定任意用户,抓取该用户的所有公开信息,包括:
历史发表/图片/好友/视屏/个人资料/签到/…
新增加搜索api(m站)
1. 反爬分析:
https://m.facebook.com/profile/timeline/stream/?cursor=tmln_strm%3A1341235186%3A4123521292106084490%3A0&profile_id=100003102976600&replace_id=u_z_0
抓包发现是通过post请求的,参数很复杂,但是,多次尝试后发现可以通过get请求得到,前提是得到replace_id
,replace_id
就是来自上一个数请求的__req
参数,__req
又在心跳包里面,不停的发生变化,发现每次请求的时候会发生的请求有:
get:
https://edge-chat.facebook.com/pull?channel=p_100003102976600&seq=1&clientid=4166e2a6&profile=mobile&partition=-2&sticky_token=588&msgs_recv=1&qp=y&cb=2838170899&state=active&sticky_pool=ash4c09_chat-proxy&uid=100003102976