💡
原文英文,约900词,阅读约需3分钟。
📝
内容提要
GraphQL是一种用于从后端获取嵌套数据的查询语言。为提高效率,推出了“持久查询”扩展,客户端仅发送查询文本的哈希值。这虽然优化了性能,但对网络爬虫造成了挑战。通过使用mitmproxy工具,可以拦截请求并修改哈希,从而提取完整查询文本,确保爬虫在网站变化时仍能正常工作。
🎯
关键要点
- GraphQL是一种用于从后端获取嵌套数据的查询语言。
- 为提高效率,推出了“持久查询”扩展,客户端仅发送查询文本的哈希值。
- 持久查询优化了性能,但对网络爬虫造成了挑战。
- GET请求更容易被阻止,且隐藏查询参数使得无法获取完整查询。
- 网站变化时,旧的哈希可能失效,无法再次使用。
- 可以通过拦截请求并修改哈希来提取完整查询文本。
- mitmproxy是一个开源工具,可以拦截并修改请求。
- 使用Python脚本修改请求的哈希值为伪造值。
- 需要使用FoxyProxy扩展将浏览器请求重定向到mitmproxy。
- 通过定期发送相同的查询和哈希,确保爬虫在网站变化时仍能正常工作。
- 持久查询虽然优化了GraphQL API的性能,但也给网络爬虫带来了显著挑战。