饿了么sign

sign获取

  1. sign校验了token、时间错、appkey、data参数
    2在这里插入代码片

`

function jj (e) {
                            function t(e, t) {
                                return e << t | e >>> 32 - t
                            }
                            function n(e, t) {
                                var n, r, o, i, a;
                                return o = 2147483648 & e,
                                i = 2147483648 & t,
                                a = (1073741823 & e) + (1073741823 & t),
                                (n = 1073741824 & e) & (r = 1073741824 & t) ? 2147483648 ^ a ^ o ^ i : n | r ? 1073741824 & a ? 3221225472 ^ a ^ o ^ i : 1073741824 ^ a ^ o ^ i : a ^ o ^ i
                            }
                            function r(e, r, o, i, a, u, s) {
                                return e = n(e, n(n(function(e, t, n) {
                                    return e & t | ~e & n
                                }(r, o, i), a), s)),
                                n(t(e, u), r)
                            }
                            function o(e, r, o, i, a, u, s) {
                                return e = n(e, n(n(function(e, t, n) {
                                    return e & n | t & ~n
                                }(r, o, i), a), s)),
                                n(t(e, u), r)
                            }
                            function i(e, r, o, i, a, u, s) {
                                return e = n(e, n(n(function(e, t, n) {
                                    return e ^ t ^ n
                                }(r, o, i), a), s)),
                                n(t(e, u), r)
                            }
                            function a(e, r, o, i, a, u, s) {
                                return e = n(e, n(n(function(e, t, n) {
                                    return t ^ (e | ~n)
                                }(r, o, i), a), s)),
                                n(t(e, u), r)
                            }
                            function u(e) {
                                var t, n = "", r = "";
                                for (t = 0; 3 >= t; t++)
                                    n += (r = "0" + (e >>> 8 * t & 255).toString(16)).substr(r.length - 2, 2);
                                return n
                            }
                            var s, l, c, d, f, p, h, m, g, v;
                            for (v = function(e) {
                                for (var t, n = e.length, r = n + 8, o = 16 * ((r - r % 64) / 64 + 1), i = new Array(o - 1), a = 0, u = 0; n > u; )
                                    a = u % 4 * 8,
                                    i[t = (u - u % 4) / 4] = i[t] | e.charCodeAt(u) << a,
                                    u++;
                                return a = u % 4 * 8,
                                i[t = (u - u % 4) / 4] = i[t] | 128 << a,
                                i[o - 2] = n << 3,
                                i[o - 1] = n >>> 29,
                                i
                            }(e = function(e) {
                                e = e.replace(/\r\n/g, "\n");
                                for (var t = "", n = 0; n < e.length; n++) {
                                    var r = e.charCodeAt(n);
                                    128 > r ? t += String.fromCharCode(r) : r > 127 && 2048 > r ? (t += String.fromCharCode(r >> 6 | 192),
                                    t += String.fromCharCode(63 & r | 128)) : (t += String.fromCharCode(r >> 12 | 224),
                                    t += String.fromCharCode(r >> 6 & 63 | 128),
                                    t += String.fromCharCode(63 & r | 128))
                                }
                                return t
                            }(e)),
                            p = 1732584193,
                            h = 4023233417,
                            m = 2562383102,
                            g = 271733878,
                            s = 0; s < v.length; s += 16)
                                l = p,
                                c = h,
                                d = m,
                                f = g,
                                p = r(p, h, m, g, v[s + 0], 7, 3614090360),
                                g = r(g, p, h, m, v[s + 1], 12, 3905402710),
                                m = r(m, g, p, h, v[s + 2], 17, 606105819),
                                h = r(h, m, g, p, v[s + 3], 22, 3250441966),
                                p = r(p, h, m, g, v[s + 4], 7, 4118548399),
                                g = r(g, p, h, m, v[s + 5], 12, 1200080426),
                                m = r(m, g, p, h, v[s + 6], 17, 2821735955),
                                h = r(h, m, g, p, v[s + 7], 22, 4249261313),
                                p = r(p, h, m, g, v[s + 8], 7, 1770035416),
                                g = r(g, p, h, m, v[s + 9], 12, 2336552879),
                                m = r(m, g, p, h, v[s + 10], 17, 4294925233),
                                h = r(h, m, g, p, v[s + 11], 22, 2304563134),
                                p = r(p, h, m, g, v[s + 12], 7, 1804603682),
                                g = r(g, p, h, m, v[s + 13], 12, 4254626195),
                                m = r(m, g, p, h, v[s + 14], 17, 2792965006),
                                p = o(p, h = r(h, m, g, p, v[s + 15], 22, 1236535329), m, g, v[s + 1], 5, 4129170786),
                                g = o(g, p, h, m, v[s + 6], 9, 3225465664),
                                m = o(m, g, p, h, v[s + 11], 14, 643717713),
                                h = o(h, m, g, p, v[s + 0], 20, 3921069994),
                                p = o(p, h, m, g, v[s + 5], 5, 3593408605),
                                g = o(g, p, h, m, v[s + 10], 9, 38016083),
                                m = o(m, g, p, h, v[s + 15], 14, 3634488961),
                                h = o(h, m, g, p, v[s + 4], 20, 3889429448),
                                p = o(p, h, m, g, v[s + 9], 5, 568446438),
                                g = o(g, p, h, m, v[s + 14], 9, 3275163606),
                                m = o(m, g, p, h, v[s + 3], 14, 4107603335),
                                h = o(h, m, g, p, v[s + 8], 20, 1163531501),
                                p = o(p, h, m, g, v[s + 13], 5, 2850285829),
                                g = o(g, p, h, m, v[s + 2], 9, 4243563512),
                                m = o(m, g, p, h, v[s + 7], 14, 1735328473),
                                p = i(p, h = o(h, m, g, p, v[s + 12], 20, 2368359562), m, g, v[s + 5], 4, 4294588738),
                                g = i(g, p, h, m, v[s + 8], 11, 2272392833),
                                m = i(m, g, p, h, v[s + 11], 16, 1839030562),
                                h = i(h, m, g, p, v[s + 14], 23, 4259657740),
                                p = i(p, h, m, g, v[s + 1], 4, 2763975236),
                                g = i(g, p, h, m, v[s + 4], 11, 1272893353),
                                m = i(m, g, p, h, v[s + 7], 16, 4139469664),
                                h = i(h, m, g, p, v[s + 10], 23, 3200236656),
                                p = i(p, h, m, g, v[s + 13], 4, 681279174),
                                g = i(g, p, h, m, v[s + 0], 11, 3936430074),
                                m = i(m, g, p, h, v[s + 3], 16, 3572445317),
                                h = i(h, m, g, p, v[s + 6], 23, 76029189),
                                p = i(p, h, m, g, v[s + 9], 4, 3654602809),
                                g = i(g, p, h, m, v[s + 12], 11, 3873151461),
                                m = i(m, g, p, h, v[s + 15], 16, 530742520),
                                p = a(p, h = i(h, m, g, p, v[s + 2], 23, 3299628645), m, g, v[s + 0], 6, 4096336452),
                                g = a(g, p, h, m, v[s + 7], 10, 1126891415),
                                m = a(m, g, p, h, v[s + 14], 15, 2878612391),
                                h = a(h, m, g, p, v[s + 5], 21, 4237533241),
                                p = a(p, h, m, g, v[s + 12], 6, 1700485571),
                                g = a(g, p, h, m, v[s + 3], 10, 2399980690),
                                m = a(m, g, p, h, v[s + 10], 15, 4293915773),
                                h = a(h, m, g, p, v[s + 1], 21, 2240044497),
                                p = a(p, h, m, g, v[s + 8], 6, 1873313359),
                                g = a(g, p, h, m, v[s + 15], 10, 4264355552),
                                m = a(m, g, p, h, v[s + 6], 15, 2734768916),
                                h = a(h, m, g, p, v[s + 13], 21, 1309151649),
                                p = a(p, h, m, g, v[s + 4], 6, 4149444226),
                                g = a(g, p, h, m, v[s + 11], 10, 3174756917),
                                m = a(m, g, p, h, v[s + 2], 15, 718787259),
                                h = a(h, m, g, p, v[s + 9], 21, 3951481745),
                                p = n(p, l),
                                h = n(h, c),
                                m = n(m, d),
                                g = n(g, f);
                            return (u(p) + u(h) + u(m) + u(g)).toLowerCase()
                        }


function map(ts,data) {
var e = ('918dff33bd1fc4a34477abe44c850c9c' + "&" + ts + "&" + '12574478' + "&" + JSON.stringify(data))
    return jj(e)
}

`

py代码

import json
import random
import time
import execjs
import requests

"""三个参数不变
@token
@rankId
@elemeRequestId
"""


def getmap(samp,data):
    with open("newjs.js",'r',encoding='utf-8') as f:
        codesj = f.read()
    cmsjs = execjs.compile(codesj)
    return cmsjs.call("map",samp,data)





def test():
    for page in range(10):
        offset = page*20
        api = 'https://waimai-guide.ele.me/h5/mtop.alsc.eleme.miniapp.collection.homepagev1/1.0/'
        headers = {
            "cookie": 'ubt_ssid=g2bi2iu9febpx59c2ielyke2ggi1a6ve_2022-05-27; cna=k3oOGzOExgkCAdzKwxqQJWW1; t=3c383d1183fa2283aef064f858830961; USERID=5056881218; UTUSER=5056881218; x5check_ele=D%2Bz4o%2F6ZZ1vka5%2FYC5k3x%2BAUZ0GR%2FMsTEoI1oGuu%2BtU%3D; tfstk=csKdBy0kgfch41llbM3Ga-SIX4LRZ3hR1J1u23mAEq6nF1rRioxDDJwiRT1V9AC..; l=eBIpXVgqLoQmv0A5BOfZnurza77TIIRAguPzaNbMiOCPO2CM5mQVB6PWcWTHCnGVh62pR3JmWBfTBeYBqQd-nxv96IUUIRHmn; _samesite_flag_=true; cookie2=16cc7ad4b0e1963eb90d10d2c6338afc; _tb_token_=fea7a1e3b6344; sgcookie=E1006Eh4JbiPAL%2BayyRE0kX%2FDiKYmKVC25TG8xlcLuG5uDTamATj2L8BvTUyFLye7vE7BP1MktX2bRxc4D8QJ4EwNaeZRY6YGx%2FKQ3njQRGtato%3D; munb=2205988831615; csg=3f0fcfdf; t_eleuc4=id4=0%40BA%2FvuHCrrRj%2BohBlqxJwL36ZSVDAJuJk4ovQKw%3D%3D; unb=2205988831615; SID=MTZjYzdhZDRiMGUxOTYzZWI5MGQxMGQyYzYzMzhhZmN1VjG8p3PBSLJ4axEcIZkh; tzyy=1e5e5a1e94e5566da49dc5d33d001118; _m_h5_tk=918dff33bd1fc4a34477abe44c850c9c_1665518378620; _m_h5_tk_enc=76f87d73ea3dcb11a80201764a39ed8a; isg=BH9_CgzxIPNv7yU6fyfOqUfKDlMJZNMGQ1N7nRFLsS51IJ-iGTWtV38yYvDeeKt-',
            "user-agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.37'
        }
        samp = int(time.time()) * 1000
        data = r'{"eventAction":"nextPage","sceneCode":"MINIAPP_ELEME_HOME_LIST","componentCode":"frontend_page_shop_list_recommend","logicPageId":"transformerpage_987","pageParams":"{\"offset\":30,\"rankId\":\"bc6ede48e07d45e99ade93be26ff3daf\",\"behavior\":\"\",\"queryParams\":\"{\\\"id\\\":\\\"\\\",\\\"description\\\":\\\"\\\",\\\"title\\\":\\\"附近推荐\\\",\\\"tabName\\\":\\\"%E9%99%84%E8%BF%91%E6%8E%A8%E8%8D%90\\\",\\\"pageCode\\\":\\\"tsfm_home_shoplist\\\",\\\"pageType\\\":\\\"\\\",\\\"clickAfterColor\\\":\\\"#00a6ff\\\",\\\"clickBeforeColor\\\":\\\"#333\\\",\\\"fontWeight\\\":\\\"bold\\\",\\\"listType\\\":\\\"\\\",\\\"position\\\":1,\\\"scrollTop\\\":0}\",\"limit\":20,\"scene\":\"miniapp:homepage\",\"elemeRequestId\":\"HMHDN118HLHBLB-1665511943402\"}","longitude":116.379737,"latitude":23.539703}'
        data = data.replace('":30',f'":{offset}')
        sign = getmap(samp, json.loads(data))
        params = {
            "jsv": "2.6.2",
            "appKey": "12574478",
            "t": str(samp),
            "sign": sign,
            "api": "mtop.alsc.eleme.miniapp.collection.homepagev1",
            "v": "1.0",
            "dataType": "json",
            "subDomain": "waimai-guide",
            "mainDomain": "ele.me",
            "H5Request": True,
            "pageDomain": "ele.me",
            "ttid": "h5@Web_android_10.6.10",
            "type": "originaljson",
            "data": data,
        }
        res = requests.get(api, headers=headers, params=params).json()
        items = res['data']['data']['frontend_page_shop_list_recommend']['fields']['items']
        for item in items:
            restaurant = item['fields']['restaurant']
            name = restaurant['name']
            print(page+1,name,restaurant)

        time.sleep(random.uniform(1,3))
if __name__ == "__main__":
    test()
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值