獲取速賣通的管產品搜索關鍵詞!!

就是獲取這個關鍵詞!!

首先我們要查看相關的鏈接比如:

到這裏我們已經看到了鏈接 請求參數 和 返回內容 開始寫代碼

# 首先我們先構建一下需要的參數 根據我的觀察 參數的主要變化 在 "t" "sign" 和 "data"中的nkey
urldata = {
        'jsv': "2.5.1",
        'appKey': 24815441,
        't': tim,
        'sign': sign,
        'api': "mtop.relationrecommend.AliexpressRecommend.recommend",
        'v': "1.0",
        'type': "jsonp",
        'dataType': "jsonp",
        'callback': 'mtopjsonp10',
        'data': '{"appId":18390,"params":"{\\"query\\":\\"' + str(nkey) + '\\",\\"userMemberSeq\\":\\"\\",\\"language\\":\\"es\\",\\"site\\":\\"esp\\",\\"shipToCountry\\":\\"US\\",\\"shipToCity\\":\\"\\",\\"clientType\\":\\"pc\\",\\"cookieId\\":\\"YRsUF5pqAkgCAbegKYZu6mi2\\",\\"statusOfUsingPrivacy\\":\\"\\"}"}',
    }

# 鏈接是這樣的
from urllib.parse import urlencode
nurl = 'https://acs.aliexpress.com/h5/mtop.relationrecommend.aliexpressrecommend.recommend/1.0/?' + urlencode(urldata)

# 好的 這個時候我們構建我們的請求頭 我發現這個請求下  只要帶 三個參數就可以 這裏構建了兩個還要帶一個cookies
Headers = {
        'referer': 'https://es.aliexpress.com/',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
    }
# cookies 的構建 其中cookise 構建中 主要是 '_m_h5_tk' 和 '_m_h5_tk_enc' 參數 其他的請求一次
# 首頁的 鏈接就可以獲取

Cookies = {
        'acs_usuc_t': 'x_csrf=__0k270ux3o4&acs_rt=f562c439078c43d2acbdfbd3b7b8e3a8',
        'aep_usuc_f': 'site=esp&c_tp=EUR&region=CN&b_locale=es_ES',
        'ali_apache_id': '11.134.216.25.1591593362612.216173.7',
        'intl_common_forever': 'heBSREitqKC8WPb/iKHwfcN7FsgWoV4+96wqRRzSa3vV7DZwrzDWMQ==',
        'intl_locale': 'es_ES',
        'xman_f': 'nUnPy5ggUBRUf2Tl0SgyHkKxkYHqoVwVihs99/cZ1eZPM7BsDol2HQYEpcDBMpfBmPEoCol19jx5d3EUm0jGXN/1KWZfKiDxCM6SaRLSOm9u2rR6qgXwhA==',
        'xman_t': 'nYK387MYVfRBNgTcRS1WT2V8JRQaIv5dzZaJxIJP7TYK28++X6DxfH5ZszSYx8Xs',
        'xman_us_f': 'x_locale=es_ES&x_l=1&x_c_chg=1&x_as_i=%7B%22aeuCID%22%3A%22%22%2C%22cookieCacheEffectTime%22%3A1591593662622%2C%22isCookieCache%22%3A%22Y%22%2C%22ms%22%3A%220%22%7D&acs_rt=f562c439078c43d2acbdfbd3b7b8e3a8',
        # 以上的cookies 是訪問 requests.get('https://es.aliexpress.com/') 獲取的

        '_m_h5_tk': '52ba79e8346419e689a1ace28bdde23a_1591766715829',
        '_m_h5_tk_enc': '437fa68b6379b4bf35c01a03c0b1adca'
    }

# 完是具備 開始請求
response = requests.request("POST", nurl, headers=Headers, cookies=Cookies)
# 查看返回結果
print(response.text)


好的主要的程序已經寫完啦 接下來 獲取相關的參數哦

# 主要參數就是那個 sign ,而這個sign 是js形成的 首先要找到這個sign 形成的js 代碼段

我們已經找到了代碼段 這個代碼段 是靜態的 copy 了下來 保存成了Crack.js 文件

// const url = require("url");
function getkey(key,token){
	var o = '//acs.aliexpress.com/h5/mtop.relationrecommend.aliexpressrecommend.recommend/1.0/',
		// data = '{"appId":18390,"params":"{\"query\":\"2\",\"userMemberSeq\":\"\",\"language\":\"es\",\"site\":\"esp\",\"shipToCountry\":\"US\",\"shipToCity\":\"\",\"clientType\":\"pc\",\"cookieId\":\"YRsUF5pqAkgCAbegKYZu6mi2\",\"statusOfUsingPrivacy\":\"\"}"}',
		// data = {"appId":18390,"params":"{\"query\":\"8000w\",\"userMemberSeq\":\"\",\"language\":\"es\",\"site\":\"esp\",\"shipToCountry\":\"US\",\"shipToCity\":\"\",\"clientType\":\"pc\",\"cookieId\":\"YRsUF5pqAkgCAbegKYZu6mi2\",\"statusOfUsingPrivacy\":\"\"}"},
		data = "{\"appId\":18390,\"params\":\"{\\\"query\\\":\\\"" + key + "\\\",\\\"userMemberSeq\\\":\\\"\\\",\\\"language\\\":\\\"es\\\",\\\"site\\\":\\\"esp\\\",\\\"shipToCountry\\\":\\\"US\\\",\\\"shipToCity\\\":\\\"\\\",\\\"clientType\\\":\\\"pc\\\",\\\"cookieId\\\":\\\"YRsUF5pqAkgCAbegKYZu6mi2\\\",\\\"statusOfUsingPrivacy\\\":\\\"\\\"}\"}",
		a = 24815441,
		s = (new Date).getTime(),
		// s = 1591249873585,
		// e = '"c5ad33fbd21234fa0556e4be4d61bc9e&'+ s +'&24815441&{"appId":18390,"params":"{"query":"8000","userMemberSeq":"","language":"es","site":"esp","shipToCountry":"US","shipToCity":"","clientType":"pc","cookieId":"YRsUF5pqAkgCAbegKYZu6mi2","statusOfUsingPrivacy":""}"}"'
		// e = 'c5ad33fbd21234fa0556e4be4d61bc9e&1591241438839&24815441&{"appId":18390,"params":"{\"query\":\"8000w\",\"userMemberSeq\":\"\",\"language\":\"es\",\"site\":\"esp\",\"shipToCountry\":\"US\",\"shipToCity\":\"\",\"clientType\":\"pc\",\"cookieId\":\"YRsUF5pqAkgCAbegKYZu6mi2\",\"statusOfUsingPrivacy\":\"\"}"}'
		// e = '5a39ba523aa53eeb829192f9a84ff118&'+ String(s) +'&24815441&{"appId":18390,"params":"{"query\":\"2\",\"userMemberSeq\":\"\",\"language\":\"es\",\"site\":\"esp\",\"shipToCountry\":\"US\",\"shipToCity\":\"\",\"clientType\":\"pc\",\"cookieId\":\"YRsUF5pqAkgCAbegKYZu6mi2\",\"statusOfUsingPrivacy\":\"\"}"}',
		// t = 'c5ad33fbd21234fa0556e4be4d61bc9e&1591241438839&24815441&{"appId":18390,"params":"{\"query\":\"8000w\",\"userMemberSeq\":\"\",\"language\":\"es\",\"site\":\"esp\",\"shipToCountry\":\"US\",\"shipToCity\":\"\",\"clientType\":\"pc\",\"cookieId\":\"YRsUF5pqAkgCAbegKYZu6mi2\",\"statusOfUsingPrivacy\":\"\"}"}'
		c = function(e) {
			function t(e, t) {
				return e << t | e >>> 32 - t
			}

			function n(e, t) {
				var n, i, r, o, a;
				return r = 2147483648 & e,
					o = 2147483648 & t,
					a = (1073741823 & e) + (1073741823 & t),
					(n = 1073741824 & e) & (i = 1073741824 & t) ? 2147483648 ^ a ^ r ^ o : n | i ? 1073741824 & a ? 3221225472 ^ a ^ r ^ o : 1073741824 ^ a ^ r ^ o : a ^ r ^ o
			}

			function i(e, i, r, o, a, s, c) {
				return e = n(e, n(n(function(e, t, n) {
						return e & t | ~e & n
					}(i, r, o), a), c)),
					n(t(e, s), i)
			}

			function r(e, i, r, o, a, s, c) {
				return e = n(e, n(n(function(e, t, n) {
						return e & n | t & ~n
					}(i, r, o), a), c)),
					n(t(e, s), i)
			}

			function o(e, i, r, o, a, s, c) {
				return e = n(e, n(n(function(e, t, n) {
						return e ^ t ^ n
					}(i, r, o), a), c)),
					n(t(e, s), i)
			}

			function a(e, i, r, o, a, s, c) {
				return e = n(e, n(n(function(e, t, n) {
						return t ^ (e | ~n)
					}(i, r, o), a), c)),
					n(t(e, s), i)
			}

			function s(e) {
				var t, n = "",
					i = "";
				for (t = 0; 3 >= t; t++)
					n += (i = "0" + (e >>> 8 * t & 255).toString(16)).substr(i.length - 2, 2);
				return n
			}
			var c, l, u, d, p, h, f, m, g, v;
			for (v = function(e) {
				for (var t, n = e.length, i = n + 8, r = 16 * ((i - i % 64) / 64 + 1), o = new Array(r - 1), a = 0, s = 0; n > s;)
					a = s % 4 * 8,
					o[t = (s - s % 4) / 4] = o[t] | e.charCodeAt(s) << a,
					s++;
				return a = s % 4 * 8,
					o[t = (s - s % 4) / 4] = o[t] | 128 << a,
					o[r - 2] = n << 3,
					o[r - 1] = n >>> 29,
					o
			}(e = function(e) {
				e = e.replace(/\r\n/g, "\n");
				for (var t = "", n = 0; n < e.length; n++) {
					var i = e.charCodeAt(n);
					128 > i ? t += String.fromCharCode(i) : i > 127 && 2048 > i ? (t += String.fromCharCode(i >> 6 | 192),
						t += String.fromCharCode(63 & i | 128)) : (t += String.fromCharCode(i >> 12 | 224),
						t += String.fromCharCode(i >> 6 & 63 | 128),
						t += String.fromCharCode(63 & i | 128))
				}
				return t
			}(e)),
			h = 1732584193,
			f = 4023233417,
			m = 2562383102,
			g = 271733878,
			c = 0; c < v.length; c += 16)
			l = h,
			u = f,
			d = m,
			p = g,
			h = i(h, f, m, g, v[c + 0], 7, 3614090360),
			g = i(g, h, f, m, v[c + 1], 12, 3905402710),
			m = i(m, g, h, f, v[c + 2], 17, 606105819),
			f = i(f, m, g, h, v[c + 3], 22, 3250441966),
			h = i(h, f, m, g, v[c + 4], 7, 4118548399),
			g = i(g, h, f, m, v[c + 5], 12, 1200080426),
			m = i(m, g, h, f, v[c + 6], 17, 2821735955),
			f = i(f, m, g, h, v[c + 7], 22, 4249261313),
			h = i(h, f, m, g, v[c + 8], 7, 1770035416),
			g = i(g, h, f, m, v[c + 9], 12, 2336552879),
			m = i(m, g, h, f, v[c + 10], 17, 4294925233),
			f = i(f, m, g, h, v[c + 11], 22, 2304563134),
			h = i(h, f, m, g, v[c + 12], 7, 1804603682),
			g = i(g, h, f, m, v[c + 13], 12, 4254626195),
			m = i(m, g, h, f, v[c + 14], 17, 2792965006),

			h = r(h, f = i(f, m, g, h, v[c + 15], 22, 1236535329), m, g, v[c + 1], 5, 4129170786),
			g = r(g, h, f, m, v[c + 6], 9, 3225465664),
			m = r(m, g, h, f, v[c + 11], 14, 643717713),
			f = r(f, m, g, h, v[c + 0], 20, 3921069994),
			h = r(h, f, m, g, v[c + 5], 5, 3593408605),
			g = r(g, h, f, m, v[c + 10], 9, 38016083),
			m = r(m, g, h, f, v[c + 15], 14, 3634488961),
			f = r(f, m, g, h, v[c + 4], 20, 3889429448),
			h = r(h, f, m, g, v[c + 9], 5, 568446438),
			g = r(g, h, f, m, v[c + 14], 9, 3275163606),
			m = r(m, g, h, f, v[c + 3], 14, 4107603335),
			f = r(f, m, g, h, v[c + 8], 20, 1163531501),
			h = r(h, f, m, g, v[c + 13], 5, 2850285829),
			g = r(g, h, f, m, v[c + 2], 9, 4243563512),
			m = r(m, g, h, f, v[c + 7], 14, 1735328473),

			h = o(h, f = r(f, m, g, h, v[c + 12], 20, 2368359562), m, g, v[c + 5], 4, 4294588738),
			g = o(g, h, f, m, v[c + 8], 11, 2272392833),
			m = o(m, g, h, f, v[c + 11], 16, 1839030562),
			f = o(f, m, g, h, v[c + 14], 23, 4259657740),
			h = o(h, f, m, g, v[c + 1], 4, 2763975236),
			g = o(g, h, f, m, v[c + 4], 11, 1272893353),
			m = o(m, g, h, f, v[c + 7], 16, 4139469664),
			f = o(f, m, g, h, v[c + 10], 23, 3200236656),
			h = o(h, f, m, g, v[c + 13], 4, 681279174),
			g = o(g, h, f, m, v[c + 0], 11, 3936430074),
			m = o(m, g, h, f, v[c + 3], 16, 3572445317),
			f = o(f, m, g, h, v[c + 6], 23, 76029189),
			h = o(h, f, m, g, v[c + 9], 4, 3654602809),
			g = o(g, h, f, m, v[c + 12], 11, 3873151461),
			m = o(m, g, h, f, v[c + 15], 16, 530742520),

			h = a(h, f = o(f, m, g, h, v[c + 2], 23, 3299628645), m, g, v[c + 0], 6, 4096336452),
			g = a(g, h, f, m, v[c + 7], 10, 1126891415),
			m = a(m, g, h, f, v[c + 14], 15, 2878612391),
			f = a(f, m, g, h, v[c + 5], 21, 4237533241),
			h = a(h, f, m, g, v[c + 12], 6, 1700485571),
			g = a(g, h, f, m, v[c + 3], 10, 2399980690),
			m = a(m, g, h, f, v[c + 10], 15, 4293915773),
			f = a(f, m, g, h, v[c + 1], 21, 2240044497),
			h = a(h, f, m, g, v[c + 8], 6, 1873313359),
			g = a(g, h, f, m, v[c + 15], 10, 4264355552),
			m = a(m, g, h, f, v[c + 6], 15, 2734768916),
			f = a(f, m, g, h, v[c + 13], 21, 1309151649),
			h = a(h, f, m, g, v[c + 4], 6, 4149444226),
			g = a(g, h, f, m, v[c + 11], 10, 3174756917),
			m = a(m, g, h, f, v[c + 2], 15, 718787259),
			f = a(f, m, g, h, v[c + 9], 21, 3951481745),
			h = n(h, l),
			f = n(f, u),
			m = n(m, d),
			g = n(g, p);
			console.log(h,f,m,g)
		return (s(h) + s(f) + s(m) + s(g)).toLowerCase()
		// 5a39ba523aa53eeb829192f9a84ff118
		// c5ad33fbd21234fa0556e4be4d61bc9e
		// ab7c0fd1d18cc84cb31bee8f88f1269f
		// token
	}(token + "&" + s + "&" + a + "&" + data),
	l = {
		jsv: "2.5.1",
		appKey: a,
		t: s,
		sign: c
	},
	u = {
		data: data,
		ua: 'ua'
	};
	console.log(l);
	return l
	// urlen = url.parse(data)
	// console.log(urlen);
}

完善我們的代碼:

# 讀取js 文件
with open('Crack.js', 'r') as f:
    jsx = f.read()

import execjs

ctx = execjs.compile(jsx)
try:    
    signdic = ctx.call('getkey', str(nkey), '52ba79e8346419e689a1ace28bdde23a')
except Exception as EX:
    print('Error:', repr(EX))
    # {'jsv': '2.5.1', 'appKey': 24815441, 't': 1591256639545, 'sign': '38f13f6014daddc17e0388d227a2c847'}
    tim = signdic['t']
    sign = signdic['sign']

#而這個的密鑰 52ba79e8346419e689a1ace28bdde23a 我也不知道什麼 最後我在cookies 中發現了它
#可以先用我這個示例中的先發一次請求 會返回這個的cookise和結果
Cookies : {'_m_h5_tk': '253ddddd57eed895a945c1e2658b9c7b_1593685254159', '_m_h5_tk_enc': '0cb269b96c1ae93d9c1dbc53670a7a79'}
dajson : {'api': 'mtop.relationrecommend.aliexpressrecommend.recommend', 'data': {}, 'ret': ['FAIL_SYS_TOKEN_EXOIRED::令牌過期'], 'v': '1.0'}

# 其中這個cookise 中會有 '_m_h5_tk' 和 '_m_h5_tk_enc' 把這個cookies 和 首頁請求的cookise 相結合
 
# 然後提出 '_m_h5_tk': '253ddddd57eed895a945c1e2658b9c7b_1593685254159', 中 
# 253ddddd57eed895a945c1e2658b9c7b 代替 52ba79e8346419e689a1ace28bdde23a 操作出 tim 和 sign

完是具備 開始幹活!

整體代碼

import requests
from urllib.parse import urlencode
import execjs
import time

with open('Crack.js', 'r') as f:
    jsx = f.read()

def T_R(nkey):
    # nkey = 'nb'
    ctx = execjs.compile(jsx)
    try:
        signdic = ctx.call('getkey', str(
            nkey), '253ddddd57eed895a945c1e2658b9c7b')
    except Exception as EX:
        print('Error:', repr(EX))
    # {'jsv': '2.5.1', 'appKey': 24815441, 't': 1591256639545, 'sign': '38f13f6014daddc17e0388d227a2c847'}
    print(signdic)
    tim = signdic['t']
    sign = signdic['sign']
    urldata = {
        'jsv': "2.5.1",
        'appKey': 24815441,
        't': tim,
        'sign': sign,
        'api': "mtop.relationrecommend.AliexpressRecommend.recommend",
        'v': "1.0",
        'type': "jsonp",
        'dataType': "jsonp",
        'callback': 'mtopjsonp10',
        'data': '{"appId":18390,"params":"{\\"query\\":\\"' + str(nkey) + '\\",\\"userMemberSeq\\":\\"\\",\\"language\\":\\"es\\",\\"site\\":\\"esp\\",\\"shipToCountry\\":\\"US\\",\\"shipToCity\\":\\"\\",\\"clientType\\":\\"pc\\",\\"cookieId\\":\\"YRsUF5pqAkgCAbegKYZu6mi2\\",\\"statusOfUsingPrivacy\\":\\"\\"}"}',
    }

    nurl = 'https://acs.aliexpress.com/h5/mtop.relationrecommend.aliexpressrecommend.recommend/1.0/?' + \
        urlencode(urldata)

    Headers = {
        'referer': 'https://es.aliexpress.com/',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
    }

    Cookies = {
        'acs_usuc_t': 'x_csrf=__0k270ux3o4&acs_rt=f562c439078c43d2acbdfbd3b7b8e3a8',
        'aep_usuc_f': 'site=esp&c_tp=EUR&region=CN&b_locale=es_ES',
        'ali_apache_id': '11.134.216.25.1591593362612.216173.7',
        'intl_common_forever': 'heBSREitqKC8WPb/iKHwfcN7FsgWoV4+96wqRRzSa3vV7DZwrzDWMQ==',
        'intl_locale': 'es_ES',
        'xman_f': 'nUnPy5ggUBRUf2Tl0SgyHkKxkYHqoVwVihs99/cZ1eZPM7BsDol2HQYEpcDBMpfBmPEoCol19jx5d3EUm0jGXN/1KWZfKiDxCM6SaRLSOm9u2rR6qgXwhA==',
        'xman_t': 'nYK387MYVfRBNgTcRS1WT2V8JRQaIv5dzZaJxIJP7TYK28++X6DxfH5ZszSYx8Xs',
        'xman_us_f': 'x_locale=es_ES&x_l=1&x_c_chg=1&x_as_i=%7B%22aeuCID%22%3A%22%22%2C%22cookieCacheEffectTime%22%3A1591593662622%2C%22isCookieCache%22%3A%22Y%22%2C%22ms%22%3A%220%22%7D&acs_rt=f562c439078c43d2acbdfbd3b7b8e3a8',

        '_m_h5_tk': '253ddddd57eed895a945c1e2658b9c7b_1593685254159', 
        '_m_h5_tk_enc': '0cb269b96c1ae93d9c1dbc53670a7a79',
    }
    response = requests.request("POST", nurl, headers=Headers, cookies=Cookies)
    return response.text

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章