最近做一个爬虫项目
但是在遇到一个 https 接口的时候,用 python requests 或者类似 postman 直接请求的时候会报 403,
但如果在 charles 里面直接对这个请求 repeat 或者 compose 请求则可以直接通过
研究了很久都无法理解这部分问题在哪儿
PS:
1.因为是 repeat 请求 所以请求内容部分应该是完全一致的
2.https
猜测: charles 这边自签名证书相关问题
这方面知识比较薄弱 望指教 感谢
1
napsterwu 2019-08-06 18:57:58 +08:00 via iPhone
Charles -> copy as curl 然后网上找个工具把 curl 转成 python request
|
2
HarryQu 2019-08-06 19:04:43 +08:00 via Android
postman -> 直接转 python 或者转 curl
我猜是 ua 的问题或者请求头中加了自定义的请求头 |
3
also24 2019-08-06 19:07:32 +08:00 via Android
如 2 楼所说,大概率是请求模仿的不够真,UA 或者 header 里少了东西
|
5
NikoTiz OP 回楼上哦,这些都是有模拟到,
而且我的操作顺序是 repeat 我模拟的已经被 403 了的请求, 在 curl request 的内容上没有任何区别, 所以怀疑是 SSL 证书交换上导致的区别结果 |
6
yc8332 2019-08-06 19:47:28 +08:00
repeat 可以说明是可重复请求的,你自己直接请求不行很明显就是参数问题或者有登录状态之类的。。。charles 代理 ssl 其他所有请求等于都是 charles 发起的,所以没有什么 ssl 证书交换问题,就和你用其他客户端请求一样。。就如上面的同学说的,复制那个请求为 curl,再和你自己构造的请求对比一下就很清楚了。
|
7
NikoTiz OP @yc8332 感谢回复 事实上是 curl 复制出来也没有任何不同。
可能我问题表述的不是很清楚,就是说对于同一个请求,在 curl 出来都是完全一样的情况下,server 层还有哪些地方可以区分出来,是否和 ssl 协议层交换秘钥有关系 |
8
NikoTiz OP @yc8332
就是我直接用 curl request 跑了 3-4 次被 ban 了,这个时候我马上再用 Charles 去 compose 请求也是可以成功的 |
10
NikoTiz OP @napsterwu 我不确定你说的这个 client certificate 指的是啥,目前来说 Charles 只在本机上装了根证书以方便去抓 https 的包,其他没有任何多余的操作,客户端这边发起请求的时候也是把验证证书关闭了的
|
11
y996848950 2023-06-28 15:47:51 +08:00
过了这么多年,不知道楼主当时有找到方法吗?
我现在也遇到一模一样的问题,cloudflare bot managerment 太强了,就是不知道 charles 是如何绕过去的 |