发送application/x-www-form-urlencoded请求
我们在实际测试中也会遇到请求application/x-www-form-urlencoded,那么我们今天来看一个例子。我们在注册博客园的时候呢,会有校验手机号的一个请求,就是一个application/x-www-form-urlencoded请求。
请求分析
我们来看下请求。请求呢,是我们输入手机号后,自动校验的,当我们不知道接口的时候就可以用F12开发者工具进行查看分析。
这是请求头,我们可以看到这样的,我们可以复制出来,做为请求的headers。
看完请求头,我们看下请求参数。
那么我们看看如何去在代码中实现呢
代码展示
import requests#接口地址url="https://account.cnblogs.com/account/checkphone"#请求头headers={ "content-type": "application/x-www-form-urlencoded; charset=UTF-8","user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",'origin': 'https://account.cnblogs.com','referer': 'https://account.cnblogs.com/signup/','sec-ch-ua': '"Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"','sec-ch-ua-mobile': '?0','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-origin',"accept-encoding": "gzip, deflate, br",'accept-language': 'zh-CN,zh;q=0.9','content-length': '38','x-requested-with': 'XMLHttpRequest','cookie': '_ga=GA1.2.507216764.1607696139; _gid=GA1.2.20006082.1607696139; __gads=ID=a0af3c482457fbd6:T=1607696140:S=ALNI_Ma4ZyAhdQj07-PWExgzpNmAJtGUoQ; .Cnblogs.Account.Antiforgery=CfDJ8AHUmC2ZwXVKl7whpe9_lasG7wDQV5i5vJUuukLmOI9F0itiUVrA3eVakBuojoT3IvqYSJ0yZWiUXeWpgLju3pbX7Rkf4bmX4mapSrqHPTAi75QT_gJjKjue0UkA0mkIioPJrYxe_IGFlUqHGyImDpU; .Cnblogs.Account.Session=CfDJ8AHUmC2ZwXVKl7whpe9%2FlavSYm3VRXi01KuhSFCTP5LWLHk5AaVajWlHycG8FtVGncRbtu7YIfV6dCPkid1l4r%2B5XuHI7lzVLUOgchpFbS5jbaqnc9P19JyRJAYN0DwJJx3acogHiJjcj9CwnUtYjHYdj2dgINAUjv%2BTTi779%2BVI; XSRF-TOKEN=CfDJ8AHUmC2ZwXVKl7whpe9_lavNd5Ha8h0P_4SPJrUu55X-8C12VbAql-CZ-bU8bgd0OTb5s2YU9SlUBqy4blAUiZggpbMQzpTyX8z_JQmfzKcDoflH9hIJNCNJQ16Po1JTDr8mcFuogzw4mTK2t5udd70; 4271c12252a544478175bac9772afc3d=99db986a-3708-4da5-b4c4-a98db5b8c355; SERVERID=daace45bf36fef87f4742d8b633fdae3|1607739455|1607739403'}#请求参数data={"PhoneNum": "1596463618","CountryCode": "+86"}#打印结果print(requests.post(url,data=data,headers=headers).json())
我们看下最后的结果。
因为我们输入的是错误的手机号码,所以返回的就是一个错误的。
其实接口的请求是很简单的,只要我们去善于分析。
最好我们有现成的本地接口可以验证。
没有接口文档可以抓包,或者通过F12来获取接口的请求和请求参数。
雷子说测试开发