为什么抓取知乎一直 MalformRequestException 错误?

2018-07-30 19:10:58 +08:00
 Cheez
Headers = {
    'Cookie': '_xsrf=....; tgw_l7_route=...; q_c1=fa50f62d64a347e2b2219e99935d1b4c|1532941819000|1532941819000; _zap=d722d2c4-2d96-4e09-a147-74a2fa53894e; z_c0=2...', 
      "Content-Type": "application/json",
     'User-Agent': 'ZhihuHybrid com.zhihu.android/Futureve/5.21.2 Mozilla/5.0 (Linux; Android 5.1.1; SM-G925F Build/LMY48Z) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Safari/537.36', 
    'accept': 'application/json, text/plain, */*'

}

responsText=  requests.post('https://www.zhihu.com/api/v4/answers/425660092/voters',  {
			"type":"up" },headers=Headers, timeout=8 ).text

一直出现:

{code:400,
message:"请求错误",
name:"MalformRequestException"}

问题是我在 fiddler 抓到的就是这样的,一模一样....

结果我加了一个:

x-app-za:OS=Android&Release=5.1.1&Model=SM-G925F&VersionName=5.21.2&VersionCode=764&Product=com.zhihu.android&Width=1080&Height=1920&Installer=%E5%BA%94%E7%94%A8%E5%AE%9D-%E5%B9%BF%E5%91%8A&DeviceType=AndroidPhone&Brand=samsung&OperatorType=46000

就可以了,问题是....我在 fiddler 抓到的完全不需要这个参数....

3755 次点击
所在节点    Python
15 条回复
NotNil1
2018-07-30 19:18:54 +08:00
反爬虫了解一下
Cheez
2018-07-30 19:20:25 +08:00
@ljtletters #1 问题是所有参数全部一样啊,一个在模拟器里面,一个用脚本跑而已.....知乎怎么反...
maemual
2018-07-30 19:44:06 +08:00
你好好查查你抓的包,肯定是要这个参数的
Cheez
2018-07-30 19:45:09 +08:00
@maemual #3 ........我查了很多遍了,不需要的,要是要的话我也不会来问了
alvin666
2018-07-30 19:58:57 +08:00
知乎的反爬做的很好的,别太高估自己了
Cheez
2018-07-30 21:45:06 +08:00
@alvin666 #5 .....我不至于连 fiddler 都看不懂
ToT
2018-07-30 21:54:47 +08:00
是不是 user agent 里有 android,所以后台会强制检测 android 版本信息什么的参数?

“问题是我在 fiddler 抓到的就是这样的,一模一样...." 这句话我没懂,fiddler 是能成功抓取还是不能呢?
Cheez
2018-07-30 22:11:18 +08:00
@ToT #7


我在 fiddler 抓正常的请求,成功接收。

我把所有 headers 都复制到代码里面,用 Python 跑,结果失败了,一直返回 MalformRequestException 错误。

我又加了个 x-app-za 的 header 就突然好了...
Cheez
2018-07-31 09:57:46 +08:00
挽尊
fan776783
2018-07-31 12:37:32 +08:00
x-app-za 这种是自定义头吗
Cheez
2018-07-31 12:42:11 +08:00
@fan776783 #10 是的
dongxiaozhuo
2018-07-31 14:49:38 +08:00
这是要脚本刷赞?

如果是,建议别费心了,知乎刷赞的被检测到的话,会退回的。
Cheez
2018-07-31 14:51:06 +08:00
@dongxiaozhuo #12 ......我在写个知乎爬虫
dongxiaozhuo
2018-07-31 14:54:08 +08:00
@Cheez 爬内容不应该是 GET 请求吗?你给的代码是是什么 POST voters 资源…
Cheez
2018-07-31 15:08:06 +08:00
@dongxiaozhuo #14 因为我想要完成一个知乎爬虫的所有功能,比如获取赞同者,赞同,取消赞同等等所有操作

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/475449

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX