Closed xingstarx closed 8 years ago
以漫画小说为例进行分析 http://api.aixifan.com/searches/channel?channelIds=74&pageNo=1&pageSize=20&sort=5 这个是新的接口信息 原来的接口如下 http://api.acfun.tv/apiserver/content/channel?orderBy=0&channelId=75&pageSize=20&pageNo=1
变动了Host,以及请求的searches/channel 同样还包括对应的参数channelId --> channelIds , orderBy --> sort
接口修改为新的之后,同样还是抓取不到数据,结果显示的 {"code":422003,"message":"deviceType缺失"}
通过对charles记录的url进行分析,发现了一个请求url,觉得问题出在这个地方,这个地方的请求数据是携带有请求头的,而这些请求头数据跟其他的api不一样,应该属于AcFun自己添加的header,用来防止用户恶意抓取数据的
下面列出来这个特殊url的请求形式: 完整url为 http://api.aixifan.com/open/phone/source
GET /open/phone/source HTTP/1.1 uid 0 If-Modified-Since Wed, 21 Sep 2016 13:04:13 GMT+00:00 market xiaomi appVersion 4.3.0 deviceType 1 If-None-Match "95f56023-742e-485c-9fdd-e4209d8d1fdd" User-agent acvideo core udid 1bfbeabd-bc43-32fa-ba2a-db535c1a7542 resolution 720x1280 productId 2000 Host api.aixifan.com Connection Keep-Alive Accept-Encoding gzip
由此我可以推测,这些特殊的参数是必须使用的,不然服务器端验证的时候,不会给你返回正确的数据,经过测试也的确如此(主要是这方面的经验比较多,哈哈,一般情况下,是很难让我破解不了的)
另外还有一个接口也有类似的数据可以参考 url为 http://api.aixifan.com/offlines/checkOffline
GET /offlines/checkOffline HTTP/1.1 uid 0 If-Modified-Since Wed, 21 Sep 2016 13:04:13 GMT+00:00 market xiaomi appVersion 4.3.0 deviceType 1 If-None-Match "707ccc56-5b47-4836-b81b-e30ca20754eb" User-agent acvideo core udid 1bfbeabd-bc43-32fa-ba2a-db535c1a7542 resolution 720x1280 productId 2000 Host api.aixifan.com Connection Keep-Alive Accept-Encoding gzip
之后在postman上面测试分析,进一步确定需要那几个特定的header数据
market xiaomi appVersion 4.3.0 deviceType 1
我们只需要在每次的请求头上面加入上面的三个参数,就可以解决数据获取不到的问题,从而避免被AcFun的服务器给干掉
当然了,毕竟接口还有很多,这个issue长期维护,还是有必要进一步优化调整的
文章明细接口
http://api.aixifan.com/articles/3123106
Thx.
also see #35
以漫画小说为例进行分析 http://api.aixifan.com/searches/channel?channelIds=74&pageNo=1&pageSize=20&sort=5 这个是新的接口信息 原来的接口如下 http://api.acfun.tv/apiserver/content/channel?orderBy=0&channelId=75&pageSize=20&pageNo=1
变动了Host,以及请求的searches/channel 同样还包括对应的参数channelId --> channelIds , orderBy --> sort
接口修改为新的之后,同样还是抓取不到数据,结果显示的 {"code":422003,"message":"deviceType缺失"}
通过对charles记录的url进行分析,发现了一个请求url,觉得问题出在这个地方,这个地方的请求数据是携带有请求头的,而这些请求头数据跟其他的api不一样,应该属于AcFun自己添加的header,用来防止用户恶意抓取数据的
下面列出来这个特殊url的请求形式: 完整url为 http://api.aixifan.com/open/phone/source
由此我可以推测,这些特殊的参数是必须使用的,不然服务器端验证的时候,不会给你返回正确的数据,经过测试也的确如此(主要是这方面的经验比较多,哈哈,一般情况下,是很难让我破解不了的)
另外还有一个接口也有类似的数据可以参考 url为 http://api.aixifan.com/offlines/checkOffline
之后在postman上面测试分析,进一步确定需要那几个特定的header数据
我们只需要在每次的请求头上面加入上面的三个参数,就可以解决数据获取不到的问题,从而避免被AcFun的服务器给干掉
当然了,毕竟接口还有很多,这个issue长期维护,还是有必要进一步优化调整的