上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12下一页
返回列表 发新帖

请问这个post是什么编码发包的的

[复制链接]

该用户从未签到

5

主题

19

回帖

47

积分

助理工程师

积分
47
发表于 2022-3-29 12:41:38 | 显示全部楼层 | 阅读模式
悬赏1油猫币已解决
本帖最后由 dahua1 于 2022-3-29 12:43 编辑

抓到一个post的包,是multipart/form-data的
QQ截图20220329123908.png

美国有线电视新闻网网站1月4日报道称  这段字符串编码成了 ÃÀ¹úÓÐÏßµçÊÓÐÂÎÅÍøÍøÕ¾1ÔÂ4ÈÕ±¨µÀ³Æ  
请问这个要怎么编码

最佳答案

查看完整内容

GBK编码,这个应该是错用UTF-8解码所以变成了乱码,把每个字符转Unicode再GBK解码就正常了。js做gbk编解码非常麻烦,因为原生不支持,可以的话尽量用别的语言解决。如果只关心解码而不需要编码,可以用以下代码实现: 如果需要编码,有两种思路:第一种是模拟form表单提交,指定accept-charset属性为GBK,即可实现自动编码。你这个网站的请求就是用form做的,不过form提交会发生页面跳转、不能跨域、无法获取返回值等等,局限性挺 ...
  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2022-3-29 12:41:39 | 显示全部楼层
    GBK编码,这个应该是错用UTF-8解码所以变成了乱码,把每个字符转Unicode再GBK解码就正常了。js做gbk编解码非常麻烦,因为原生不支持,可以的话尽量用别的语言解决。如果只关心解码而不需要编码,可以用以下代码实现:
    1. const str = 'ÃÀ¹úÓÐÏßµçÊÓÐÂÎÅÍøÍøÕ¾1ÔÂ4ÈÕ±¨µÀ³Æ';
    2. const array = str.split('').map(c => c.charCodeAt(0));
    3. const uint8 = Uint8Array.from(array);
    4. const decoder = new TextDecoder('gbk');
    5. console.log(decoder.decode(uint8));
    复制代码

    如果需要编码,有两种思路:第一种是模拟form表单提交,指定accept-charset属性为GBK,即可实现自动编码。你这个网站的请求就是用form做的,不过form提交会发生页面跳转、不能跨域、无法获取返回值等等,局限性挺大的。第二种是找一些别人写好的库来解决(原理是字符映射,文件不小),编码后的效果就是你发的那些百分号,发送请求的关键是不要用FormData来做,而是写成'A=B&C=D'这种字符串形式,指定Content-Type为:application/x-www-form-urlencoded;charset=UTF-8
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-3-29 12:59:13 | 显示全部楼层
    这个看着不像什么通用编码
    感觉可能自己对字符串做换算了
    只能靠逆向反推?
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    19

    回帖

    47

    积分

    助理工程师

    积分
    47
    发表于 2022-3-29 13:06:21 | 显示全部楼层
    李恒道 发表于 2022-3-29 12:59
    这个看着不像什么通用编码
    感觉可能自己对字符串做换算了
    只能靠逆向反推? ...

    看上去和上传图片时候的编码差不多
    function dosubmit() {
      document.form1.action = "post/new?bid=1&action=Post";
      document.form1.target = "_self";
      document.form1.submit();
    }
    提交按钮指向这个函数,不知道怎么反推
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-3-29 13:12:11 | 显示全部楼层
    dahua1 发表于 2022-3-29 13:06
    看上去和上传图片时候的编码差不多
    function dosubmit() {
      document.form1.action = "post/new?bid=1&a ...

    网站看看?
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-3-29 13:16:21 | 显示全部楼层
    就是一个formData的请求,这应该不能说是编码,是数据原文,数据原文就是这样,显示出来是乱码
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    19

    回帖

    47

    积分

    助理工程师

    积分
    47
    发表于 2022-3-29 13:39:52 | 显示全部楼层
    王一之 发表于 2022-3-29 13:16
    就是一个formData的请求,这应该不能说是编码,是数据原文,数据原文就是这样,显示出来是乱码 ...

    -----------------------------23214671055070535092923987219
    Content-Disposition: form-data; name="subject"

    如果想通过异步方法先后检测用户名和密码
    -----------------------------23214671055070535092923987219
    Content-Disposition: form-data; name="sub"

    67
    -----------------------------23214671055070535092923987219
    Content-Disposition: form-data; name="body"

    如果想通过异步方法先后检测用户名和密码如果想通过异步方法先后检测用户名和密码,需要先异步检测用户名,然后再异步检测密码的情况下就很适合 Promise。
    -----------------------------23214671055070535092923987219
    Content-Disposition: form-data; name="value"

    0
    -----------------------------23214671055070535092923987219
    Content-Disposition: form-data; name="embed"

    on
    -----------------------------23214671055070535092923987219
    Content-Disposition: form-data; name="bid"

    1
    -----------------------------23214671055070535092923987219
    Content-Disposition: form-data; name="done"

    /post/page?bid=1
    -----------------------------23214671055070535092923987219--



    我不加编码发包的时候直接显示的是汉字,成功的帖子显示的是这样的乱码

    濡傛灉鎯抽?氳繃寮傛?鏂规硶鍏堝悗妫?娴嬬敤鎴峰悕鍜屽瘑鐮?
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-3-29 13:45:45 | 显示全部楼层
    dahua1 发表于 2022-3-29 13:06
    看上去和上传图片时候的编码差不多
    function dosubmit() {
      document.form1.action = "post/new?bid=1&a ...

    看了下...这个好像真是数据原文...没任何加密
    一之哥哥说得对
    我对原生不了解
    等一之哥哥解答吧

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    19

    回帖

    47

    积分

    助理工程师

    积分
    47
    发表于 2022-3-29 13:58:54 | 显示全部楼层
    本帖最后由 dahua1 于 2022-3-29 14:00 编辑
    王一之 发表于 2022-3-29 13:16
    就是一个formData的请求,这应该不能说是编码,是数据原文,数据原文就是这样,显示出来是乱码 ...

    要怎么发出  数据原文这种包呢,我用下面的方式发出去,成功以后帖子是乱码
        var 数据 = {
            "subject":"如果想通过异步方法先后检测用户名和密码",
            "sub":"67",
            "body":"如果想通过异步方法先后检测用户名和密码,需要先异步检测用户名,然后再异步检测密码的情况下就很适合 Promise。",
            "value":"0",
            "embed":"on",
            "bid":"1",
            "done":"\/post\/page?bid=1",
        }
    var 链接 = "http://www.cjsdn.net/post/new?bid=1&action=Post"

    post3(链接,数据,function (返回数据){})

    function post3(url,jsondata,callback){
        var xhr = new XMLHttpRequest();
        xhr.open('post', url, true);
        var formData = new FormData();
        for (var key in jsondata) {
            formData.append(key, jsondata[key])
        }
        xhr.send(formData);
        xhr.onload = function () {
            if(xhr.readyState==4&&xhr.status==200){
                callback(xhr.responseText);
            }
        }
    }
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-3-29 14:11:20 | 显示全部楼层
    dahua1 发表于 2022-3-29 13:58
    要怎么发出  数据原文这种包呢,我用下面的方式发出去,成功以后帖子是乱码
        var 数据 = {
            "subj ...

    不能直接发么?
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表