我想用 python 模拟向某个网站 POST 数据,我使用 python 将需要 POST 的数据执行下面的代码后: post_to_short_url = { 'url':'http://djaa.cn/shopUrl.php?shopName=%s&shopUrl=%s&userid=%s'%(name, urls, userid), 'a':'6', 'b':'5' } data = urllib.parse.urlencode(post_to_short_url).encode(encoding='UTF-8') print (data)
然后结果是: a=6&url=http%3A%2F%2Fdjaa.cn%2FshopUrl.php%3FshopName%3D%E6%89%8B%E6%9C%BA%E5%A4%A9%E7%8C%AB%E5%95%86%E5%93%81%E8%AF%A6%E6%83%85%26shopUrl%3Dhttps%3A%5C%2F%5C%2Fdetail.m.tmall.com%5C%2Fitem.htm%3Fid%3D531548555213%26userid%3D298841&b=5 这一串就是 Python 要向服务器 POST 的数据
然后我又使用火狐浏览器 POST 一样的数据,然后用 HttpFox 来抓包分析,结果看到浏览器像服务器 POST 的数据是: url=http%3A%2F%2Fdjaa.cn%2FshopUrl.php%3FshopName%3D%E6%89%8B%E6%9C%BA%E5%A4%A9%E7%8C%AB%E5%95%86%E5%93%81%E8%AF%A6%E6%83%85%26shopUrl%3Dhttps%253A%252F%252Fdetail.m.tmall.com%252Fitem.htm%253Fid%253D531548555213%26userid%3D298841&a=6&b=5
然后我仔细对比了下两个 POST 的异同,发现: 1 : python 把冒号:编码成%3A ,把反斜杠编码成%5C2F 2 :浏览器把冒号:编码成%253A ,把反斜杠编码成%252F
然后查看了下浏览器的编码方式 UTF-8 ,而 Python 也用了 UTF-8 方式编码然后结果却不一样
谁可以帮我分析下 /(ㄒoㄒ)/~~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.