requests请求谷歌翻译遇到400该怎么解决?
前请提要
逛52论坛的时候,看到有人问为啥谷歌翻译会返回400
自己试了一下发现是因为传值格式才会返回400,下面简单讲一下自己的流程
简单测试
首先先去谷歌翻译的网站,看一下请求的流程
发现上面这个请求就是发送要翻译的内容,然后再获取返回值的请求
然后再看一下参数
之后简单写一个请求
1 | import requests |
发现返回值是400,很迷
解决
我当时其实以为的是会有什么检测,但是仔细一想,不应该啊。
然后发现用f.req: %5B%5B%5B%22MkEWBc%22%2C%22%5B%5B%5C%22%E7%8E%A9%5C%22%2C%5C%22zh-CN%5C%22%2C%5C%22en%5C%22%2Ctrue%5D%2C%5Bnull%5D%5D%22%2Cnull%2C%22generic%22%5D%5D%5D
这个值做请求的话,会正常返回200,那么原因其实就是出在参数上了,但是具体是什么原因呢?
还是不是很清楚,于是换了个浏览器。
首先试的试edge发现跟谷歌没啥区别,然后就试了一下火狐,发现问题所在了
参数上的英译汉,然后翻译内容等等,前面的不是随便加的,是参数的一部分,所以应该加\\\"
其实就是\“这个,而如果只用\"
的话结果则是”,所以就导致传的内容出现了问题,然后就会返回400了,更改一下参数就会返回正常的值了。
1 | 200 |
requests请求谷歌翻译遇到400该怎么解决?
http://www.datehoer.com/posts/69c45d9c-6e80-11ee-a697-01b0896cf41d/