JS逆向之人口流动态势

文章目录

  • 1. 初步分析
  • 2. 定位加密js
  • 3. 编写python程序一边调试一边补充js代码
  • 愿神明偏爱,一切从欢

1. 初步分析

目标网址:人口流动态势网
进入网站。尽量选择比较靠前的时间,因为最新的数据还没有展示出来

JS逆向之人口流动态势_第1张图片
我们的需求就是获取流入来源城市和其所占的比例。
抓包分析,
JS逆向之人口流动态势_第2张图片

发现响应的数据全被加密了,内容如下:

eyJpdiI6IjdnaTdvZ1Vxb1lkNWE2UTFZTlBGdVE9PSIsInZhbHVlIjoiSTI5dmhIK2F6NnBLc0U0UUJPdGlnS1QrZEVcL08yYlRVMjRCXC9oZmpMTFRlZVdNb0paV2JBT0dzZGFwZEh2bERldWdPQWJvTzJHcEtMWHVWZGxWd3FlWXdHbCtwb2twZ1ZpeVI2MnhtTnpNWGtUemVMd1J0NTZZVVI2RzJTWGtKN3pmSzZRaUNubzZpdTZzVXhxalp0dVpxS1wvbTEzMWsyekNRMGtcLzVTQXQxWHorMjB2Vzdrc25YUTlZcWpnWHNkbVcwOW1TSkJFeENWckRQald6U3UrSktlR1lGdzk3OFhSOWJpcWI4N3N4UzJRQXU2ZkR4TWY4RG1TVFppVFwvckJ6RW5jck5NWkVkd2o3eVgrazFSejVNNzVcL1NYMW1JbkEra0ZjSHVIdDNoXC9YMFJGbnpKWGlKaEVMcDJcL2lodGx4d1lMbWRybFB1VHM4XC85YTJVSFowa21TYlNneGlPR1BVdU5tMlgyTHBYRTY4ZXhPRVJ5c3NjanM0TVZKemtwVTJ1T3B2aFUwSXcwNENXWkhwRHMxMUFQNzRhc0hXTFkyQmhtWXpNNFVmZWFyRlJUM2hCMEVvZWk1c2oycE8rd2YzWml6Z0h0Q1g1Nkh3U29OeklrZDJRRjY4MUVYTjFSYml6d0VtMGp5Z1hwV21aUmVUZDI1K3pNXC9ZXC9SbDdaazM3YnBFeXNTZnEwa056SHpET0JpN0NwMm1iOFVqR1RkeVh1VFNNdTFqVmZcL3R2ZkFobE12K1cyQjZialwvTVwvdmpueVZCVEpvblwvQUVqcXZTOFVCNk9CSVM0K2cyd0NBVmVaMzVOTUh0VkJLeFRIMmVlMGlETllXU1poWVQxaTdKcHN3U2grdkRqTm5NV2dyS25cL05sbHVSS3VONURoSExQMms3Mm9QM1c2RkNWZ3VhUldnY1ZGcXA3VWlsekFnMkkyQTM4cFo2clZjRytheVc2UHozVzRUY3FwVmYzb0NJVjFRTldDUGR5QURWUTZMdTNkYWs4MVpwMmlmcGpwaThWZkwxcUtJY1wvUndrazZhbkMrMHUxajdiSWlxN2JkNlwvRTNoeUNtUENGWkJXUUJIak1wUUk1NkNQdysrU2huTnF4aTlkaXhjdmg0QkVJb1NTb1wvMTY1Y2FzSmdtZmlUVVJxRzJURmkzU2ZHcWVlK28waXRFbXJsN1VnSnpUelhjckJ3QnNTdVFGTHRGZTNra0JuMnpYOVFTZmV6Tys4XC9sNG1KNVc4c3YzV24rNnFER3Qyc0Qrb1VqUllqTnZpZ1UyRDM0OXdGQkJpXC9xZnhkaUlQRjRJXC9hSUtBQlozTnJOXC9NMWhIWk5iVzN5VDNMVXBhK1EwQ1hrcmVpSkw4amhYMTVjTlFYNWczUGs3dWp6ekFJek93dFpraFd3VnBsd1wvaVJEdzBvREtER3VYQ2R2OUtCdVdoV1ZSUmx4NWFcL2FcL2RkaXJLc0I5MVlDR2NsdjRZUzhCS2czSWNVdmd0dlkwaVJoTStzcnZlNll2ODEwVVdNWmhWM1ZQRTdQTnpUcHk0VWtFMWlNNFdJYWF3SUpcL3JITVZBYzJPaVBHMW8zQlBKbDdwSVVtaWZjczFVaXBnXC9lY2ZLem5MZlA3OUhudGNDWmhXNnd2Z0g5S2N6N3JtNkl6cXJhZXVSUmVVQUZXYWplXC9saWJYd1Vwd29ZSm1DS0pxK3VxUmRwSEl2Wm80QXFPV1BqTjVZSEZ5UFc3bXUrMU9zZkRzZW1JY1wvN2pXbU95TGNvK3l6dytCckxnRG9ab0hJY0tINXZ5aG9MNUl4NG9acGFlcUVvamhDT2l0ZDFJbVdTU05pUUx5S3ZvOUJrbnVGK29ONzBTZzBxNG9BNDZSVDQyU2twWnpXbEg0Z1dwS3FHd0lCclQxMWhBMWV2dm11ZVJHdm1pQ3c9PSIsIm1hYyI6ImFmMDkwYzI3YzliYWE4ODFmZTNhMjNlODhmYjBkMTAzNGMwYmEzMDdiMmEyYTU3ZWMzMWQzYjM3NTVhZTBlZWQifQ==

这种加密的和我们上次做的那个企名片案例比较类似,只不过这个是全部都加密了,说一个可能不太成熟的经验,像这种以==结尾的一般都是base64加密,我们可以用base64解析网站验证一下,这种解析网站有很多,直接百度都能找到,我这里用的是Base64.us,把加密数据粘贴,点击解码之后:
JS逆向之人口流动态势_第3张图片
可以看到结果转成了json格式的字符串,可以断定这是base64加密。接下来我们直接开始定位加密js。

2. 定位加密js

还记得上个企名片那个案例吗?那个是直接搜索encrypt_data关键词定位到了一个JSON.parse函数,我们这种可以直接全局搜索json.parse,JS逆向之人口流动态势_第4张图片
敏感的你可能一眼就能看到那个加密相关的js,再搜一下进去JS逆向之人口流动态势_第5张图片
扣下来,

function dataDecode(data){
            var base = new Base64();
            var d = JSON.parse(base.decode(data));
            var key = 'UVJgCE+OFIff3hK5BT5sPBbGZzjR6FwntjSCwOA9tUQ=';
            var key1  = CryptoJS.enc.Base64.parse(key);
            var iv1   = CryptoJS.enc.Base64.parse(d.iv);
            var decrypted=CryptoJS.AES.decrypt(d.value,key1,{
                iv : iv1,
                mode : CryptoJS.mode.CBC,
                padding : CryptoJS.pad.Pkcs7
            });
            var d = decrypted.toString(CryptoJS.enc.Utf8);
            return JSON.parse(d);
        }

3. 编写python程序一边调试一边补充js代码

开始编写python代码尝试解密,加密数据是正常的get请求,没有一点问题,这里不再进行编写get请求拿到加密数据了,我们直接用抓包拿到的加密数据测试:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author  : 冰履踏青云
# @File    : 02.py
# @Software: PyCharm
import execjs
def get_decode(data):
    with open('1.js',encoding='utf-8') as f:
        jscode = f.read()
    res = execjs.compile(jscode).call('dataDecode',data)
    print(res)
data = 'eyJpdiI6ImhzbDZtTkFET3pSbTQwYk1VYzF6Mnc9PSIsInZhbHVlIjoiK3lteTlVZU1CUzZKb1dZTDNVbTNWWllsYWQ2bHhLUDJnZ3RJeWRjd0swOGU4Q1VYM2J5b0NZVVc2djljWXJZYTV3ZUJwdVwvYVBLV2FRK01vNUpLcWxOSDdxTFwva2padmFnT1I5ZDlrZDdSUHdNdG14TlwvbXVKdFwvWW8wcWNzaXh0U0Y3eUFWXC9cL1cweUQ5NjFVd0tqUjM3NklvblB1R0dweXh1ZFBZdG5NcHUzU09nM0xJTnBlTm9GNU5yMis0WGs5c3RjdUdRMDY5aVY3T1RmbTdIMExEdm43aDQ5NitFS1J3YnhxWXdvTnpBdzdGUzlGdVRhNnpaRnJmMEZLNHBudUE3Ymp1UzArU3ZucmN1U0NqOG1aNVc1WmJtTHVkeUt2a2FKaFp0REZ6cmhLVkUxQWp0czZZTnpaaXJBMW1rK01JZG1DWVpZRFRXTlFNbld2MUdDYWl0T0N1R2h1bmpIczF5WmJMVkVMSDh2anFQR3lSWEF4TjlmdTBzdWFuWVRpMkJrVStXY1ErWGlIa0wwdGZmamlQRFlUUE5xbmVzK2N3U3dscEpVZmJRbXhaTXp6XC9xOXhDSzNxQlMwREQwcWUrbTl0QllcL3Z6ZVBGanVPd3VhVlVGVFlhK1ZLdkdIcDVVSlFRRDVFZzRNVko1QXZKRVNJeU53cE0zbHNxdnNRQlBHYTJyeWZxZWdYQU1MS1VzN3AyY0Qram45c0lNOVdZanp4dGprZmJaM1QyaWthRDJqS2xTMGszRlVPTDdGSlBXazY0SHpRc0VJVUlEWndobnlCbDhyRGdlM0FIbm4wUkwyR3ZtNnExYnJLQzZKSHV1U1ZSdHRVZGtHczVlK0VsMmVqcTJBcVwvRE1WNVZ1R3ZFbnVVdjc3SUZtc1VWQzY4ZVYzTm5uVTk2YWJnNDF5a08yc1hHU1wvM2Y5RTRIRGl5NlFVcThpZUlrKzFEWUJ2NTFTWTFHRUVXTzRrMTFBVjVUOG1sTncxQ1daRlp5aENXa0p6NXJDaXBcL0VMZVBEZzR2RVBIczV1SEgzQWFQa2R6eTU5MHpQV3N3UDJPanV2T21QNkt5TWptaDF4OGM0UUdQTjRWZ200YUtXUFBQVERhaXhmVms5K1lKTXVsdkhIQ0dBRU4rTUxDRDdrV2k1NkpKVU1YRFVoblJcL1wvaGhkZmo0RDgrRnBwOTlPZGJIcVlWaHlTUW1rV1ZYbWdBSGdINE1wZEdaUnZtZEJVUW5ha3FRemlrT0dPWVlcL1p6UGEyYmlwMWtka2xIbTFVMzRLVTJDdXk2OW9UQjJFZklldDRjeFJRTGhOQXZxeDdJVnhWTktRQ09VSFk0a281a1Jjcnhrb3NTVVJNOW5xSmU3cjdEVFZYeEFnYmMyVlVkYkF3S0lDem9ORFZ4Zm9zTWJQbkVaZFdiWGx4TEVjVVR2b29cL2F3ME9qd2JsQlhWbHRrTXdmQVVidjJhZ3poVVdLY0NobVJGb2o3MXVYcTFiNVI4S2pMbnVQWlhoMFNLTG0wbHJkUEpvaFlYRmJWTHYyeXliXC9oelpDNUM2clNaRlpFdjRicXQzMFNRK1wvSXgyd2dGYkd3UTNqMEZkc1dkSGRZZGlxcUF5aHhDZEJmYWNBbDdQNzBKYnFzZ2h2TFNKSFBPMWVSSURqMDZFTFwvK0doakt0bzVOWVhiNTQ2OGppdDhBYWJraHZjYlE4eEtkUjBQMjU2dzhiMzJKamlxbmxOZVliekFHRHVQSUtKbjh0ZzA5c2lKNlllWDMwNlltM1NFRUp6NUxVaEFpNVYycGQ4YUJHQzQyUlNQR0J0WDk4dnZTUmhDU2NvaU1pNENRc0pscXVjZThqMHN5MDhpa2FyTFFZbTc1bWcxbHhEcHM2YzZ6TWkydVI2b3A2cE9SZmR6TENjcHM0ZEE9PSIsIm1hYyI6IjIyMWI0MWQ3ZTUwNjhjMTU5YjRiNjVmMmIxYzM1NTBkOWJlOTNlZjEyMDBiNTdkNDgxMDUzNzNlMWQ1YTBjMTUifQ=='

get_decode(data)

初次运行python代码,出现以下报错:
JS逆向之人口流动态势_第6张图片
很明显它说咱们没有定义base64,我们继续回到js,打上断点调试;
JS逆向之人口流动态势_第7张图片
进入base64函数,抠下来js

function Base64() {  

    // private property  
    _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";  

    // public method for encoding  
    this.encode = function (input) {  
        var output = "";  
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;  
        var i = 0;  
        input = _utf8_encode(input);  
        while (i < input.length) {  
            chr1 = input.charCodeAt(i++);  
            chr2 = input.charCodeAt(i++);  
            chr3 = input.charCodeAt(i++);  
            enc1 = chr1 >> 2;  
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);  
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);  
            enc4 = chr3 & 63;  
            if (isNaN(chr2)) {  
                enc3 = enc4 = 64;  
            } else if (isNaN(chr3)) {  
                enc4 = 64;  
            }  
            output = output +  
            _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +  
            _keyStr.charAt(enc3) + _keyStr.charAt(enc4);  
        }  
        return output;  
    }  

    // public method for decoding  
    this.decode = function (input) {  
        var output = "";  
        var chr1, chr2, chr3;  
        var enc1, enc2, enc3, enc4;  
        var i = 0;  
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");  
        while (i < input.length) {  
            enc1 = _keyStr.indexOf(input.charAt(i++));  
            enc2 = _keyStr.indexOf(input.charAt(i++));  
            enc3 = _keyStr.indexOf(input.charAt(i++));  
            enc4 = _keyStr.indexOf(input.charAt(i++));  
            chr1 = (enc1 << 2) | (enc2 >> 4);  
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);  
            chr3 = ((enc3 & 3) << 6) | enc4;  
            output = output + String.fromCharCode(chr1);  
            if (enc3 != 64) {  
                output = output + String.fromCharCode(chr2);  
            }  
            if (enc4 != 64) {  
                output = output + String.fromCharCode(chr3);  
            }  
        }  
        output = _utf8_decode(output);  
        return output;  
    }  

    // private method for UTF-8 encoding  
    _utf8_encode = function (string) {  
        string = string.replace(/\r\n/g,"\n");  
        var utftext = "";  
        for (var n = 0; n < string.length; n++) {  
            var c = string.charCodeAt(n);  
            if (c < 128) {  
                utftext += String.fromCharCode(c);  
            } else if((c > 127) && (c < 2048)) {  
                utftext += String.fromCharCode((c >> 6) | 192);  
                utftext += String.fromCharCode((c & 63) | 128);  
            } else {  
                utftext += String.fromCharCode((c >> 12) | 224);  
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
                utftext += String.fromCharCode((c & 63) | 128);  
            }  

        }  
        return utftext;  
    }  

    // private method for UTF-8 decoding  
    _utf8_decode = function (utftext) {  
        var string = "";  
        var i = 0;  
        var c = c1 = c2 = 0;  
        while ( i < utftext.length ) {  
            c = utftext.charCodeAt(i);  
            if (c < 128) {  
                string += String.fromCharCode(c);  
                i++;  
            } else if((c > 191) && (c < 224)) {  
                c2 = utftext.charCodeAt(i+1);  
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
                i += 2;  
            } else {  
                c2 = utftext.charCodeAt(i+1);  
                c3 = utftext.charCodeAt(i+2);  
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  
                i += 3;  
            }  
        }  
        return string;  
    }  
}

继续执行python代码,又报错:JS逆向之人口流动态势_第8张图片
二话不说继续去抠js,
JS逆向之人口流动态势_第9张图片
我们点开后面的parse方法就会直接进入cryptojs文件,大致看了一下从第19行开始定义的该方法,
JS逆向之人口流动态势_第10张图片
直到末尾:
JS逆向之人口流动态势_第11张图片
好像都跟它相关,嫌麻烦不必再纠结这玩意儿,直接拿下来(19-5983行),js太长这里就不贴了。
再次调试:

JS逆向之人口流动态势_第12张图片
对比一下原网页:
JS逆向之人口流动态势_第13张图片

可以看到那些比例百分数已经可以正常显示了。
接下来我们只需要把source_city的值换成正常的值就行,继续调试:
JS逆向之人口流动态势_第14张图片
把citylist copy下来,放到json.cn解析一下:JS逆向之人口流动态势_第15张图片
可以看到,每一个城市都有一个对应编码,键值对应,接下来了就看想怎么写了,我把我的贴一下仅供参考:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author  : 冰履踏青云
# @File    : 02.py
# @Software: PyCharm
import json
import execjs
import jsonpath

def get_decode(data):
    with open('1.js',encoding='utf-8') as f:
        jscode = f.read()
    res = execjs.compile(jscode).call('dataDecode',data)
    # print(res)
    return res
data = 'eyJpdiI6ImhzbDZtTkFET3pSbTQwYk1VYzF6Mnc9PSIsInZhbHVlIjoiK3lteTlVZU1CUzZKb1dZTDNVbTNWWllsYWQ2bHhLUDJnZ3RJeWRjd0swOGU4Q1VYM2J5b0NZVVc2djljWXJZYTV3ZUJwdVwvYVBLV2FRK01vNUpLcWxOSDdxTFwva2padmFnT1I5ZDlrZDdSUHdNdG14TlwvbXVKdFwvWW8wcWNzaXh0U0Y3eUFWXC9cL1cweUQ5NjFVd0tqUjM3NklvblB1R0dweXh1ZFBZdG5NcHUzU09nM0xJTnBlTm9GNU5yMis0WGs5c3RjdUdRMDY5aVY3T1RmbTdIMExEdm43aDQ5NitFS1J3YnhxWXdvTnpBdzdGUzlGdVRhNnpaRnJmMEZLNHBudUE3Ymp1UzArU3ZucmN1U0NqOG1aNVc1WmJtTHVkeUt2a2FKaFp0REZ6cmhLVkUxQWp0czZZTnpaaXJBMW1rK01JZG1DWVpZRFRXTlFNbld2MUdDYWl0T0N1R2h1bmpIczF5WmJMVkVMSDh2anFQR3lSWEF4TjlmdTBzdWFuWVRpMkJrVStXY1ErWGlIa0wwdGZmamlQRFlUUE5xbmVzK2N3U3dscEpVZmJRbXhaTXp6XC9xOXhDSzNxQlMwREQwcWUrbTl0QllcL3Z6ZVBGanVPd3VhVlVGVFlhK1ZLdkdIcDVVSlFRRDVFZzRNVko1QXZKRVNJeU53cE0zbHNxdnNRQlBHYTJyeWZxZWdYQU1MS1VzN3AyY0Qram45c0lNOVdZanp4dGprZmJaM1QyaWthRDJqS2xTMGszRlVPTDdGSlBXazY0SHpRc0VJVUlEWndobnlCbDhyRGdlM0FIbm4wUkwyR3ZtNnExYnJLQzZKSHV1U1ZSdHRVZGtHczVlK0VsMmVqcTJBcVwvRE1WNVZ1R3ZFbnVVdjc3SUZtc1VWQzY4ZVYzTm5uVTk2YWJnNDF5a08yc1hHU1wvM2Y5RTRIRGl5NlFVcThpZUlrKzFEWUJ2NTFTWTFHRUVXTzRrMTFBVjVUOG1sTncxQ1daRlp5aENXa0p6NXJDaXBcL0VMZVBEZzR2RVBIczV1SEgzQWFQa2R6eTU5MHpQV3N3UDJPanV2T21QNkt5TWptaDF4OGM0UUdQTjRWZ200YUtXUFBQVERhaXhmVms5K1lKTXVsdkhIQ0dBRU4rTUxDRDdrV2k1NkpKVU1YRFVoblJcL1wvaGhkZmo0RDgrRnBwOTlPZGJIcVlWaHlTUW1rV1ZYbWdBSGdINE1wZEdaUnZtZEJVUW5ha3FRemlrT0dPWVlcL1p6UGEyYmlwMWtka2xIbTFVMzRLVTJDdXk2OW9UQjJFZklldDRjeFJRTGhOQXZxeDdJVnhWTktRQ09VSFk0a281a1Jjcnhrb3NTVVJNOW5xSmU3cjdEVFZYeEFnYmMyVlVkYkF3S0lDem9ORFZ4Zm9zTWJQbkVaZFdiWGx4TEVjVVR2b29cL2F3ME9qd2JsQlhWbHRrTXdmQVVidjJhZ3poVVdLY0NobVJGb2o3MXVYcTFiNVI4S2pMbnVQWlhoMFNLTG0wbHJkUEpvaFlYRmJWTHYyeXliXC9oelpDNUM2clNaRlpFdjRicXQzMFNRK1wvSXgyd2dGYkd3UTNqMEZkc1dkSGRZZGlxcUF5aHhDZEJmYWNBbDdQNzBKYnFzZ2h2TFNKSFBPMWVSSURqMDZFTFwvK0doakt0bzVOWVhiNTQ2OGppdDhBYWJraHZjYlE4eEtkUjBQMjU2dzhiMzJKamlxbmxOZVliekFHRHVQSUtKbjh0ZzA5c2lKNlllWDMwNlltM1NFRUp6NUxVaEFpNVYycGQ4YUJHQzQyUlNQR0J0WDk4dnZTUmhDU2NvaU1pNENRc0pscXVjZThqMHN5MDhpa2FyTFFZbTc1bWcxbHhEcHM2YzZ6TWkydVI2b3A2cE9SZmR6TENjcHM0ZEE9PSIsIm1hYyI6IjIyMWI0MWQ3ZTUwNjhjMTU5YjRiNjVmMmIxYzM1NTBkOWJlOTNlZjEyMDBiNTdkNDgxMDUzNzNlMWQ1YTBjMTUifQ=='

bili = get_decode(data)

city_list = "{\"999\":{\"city_code\":\"999\",\"city_name\":\"无法区分\"},\"V0152900\":{\"city_code\":\"V0152900\",\"city_name\":\"阿盟\"},\"V0152200\":{\"city_code\":\"V0152200\",\"city_name\":\"兴安盟\"},\"V0150400\":{\"city_code\":\"V0150400\",\"city_name\":\"赤峰\"},\"V0150100\":{\"city_code\":\"V0150100\",\"city_name\":\"呼和浩特\"},\"V0152302\":{\"city_code\":\"V0152302\",\"city_name\":\"呼伦贝尔\"},\"V0152700\":{\"city_code\":\"V0152700\",\"city_name\":\"鄂尔多斯\"},\"V0152500\":{\"city_code\":\"V0152500\",\"city_name\":\"锡林郭勒\"},\"V0152800\":{\"city_code\":\"V0152800\",\"city_name\":\"巴彦淖尔\"},\"V0152600\":{\"city_code\":\"V0152600\",\"city_name\":\"乌兰察布\"},\"V0152301\":{\"city_code\":\"V0152301\",\"city_name\":\"通辽\"},\"V0150300\":{\"city_code\":\"V0150300\",\"city_name\":\"乌海\"},\"V0150200\":{\"city_code\":\"V0150200\",\"city_name\":\"包头\"},\"V0110000\":{\"city_code\":\"V0110000\",\"city_name\":\"北京\"},\"V0120000\":{\"city_code\":\"V0120000\",\"city_name\":\"天津\"},\"V0370700\":{\"city_code\":\"V0370700\",\"city_name\":\"潍坊\"},\"V0370100\":{\"city_code\":\"V0370100\",\"city_name\":\"济南\"},\"V0371000\":{\"city_code\":\"V0371000\",\"city_name\":\"威海\"},\"V0370200\":{\"city_code\":\"V0370200\",\"city_name\":\"青岛\"},\"V0370500\":{\"city_code\":\"V0370500\",\"city_name\":\"东营\"},\"V0372401\":{\"city_code\":\"V0372401\",\"city_name\":\"德州\"},\"V0370900\":{\"city_code\":\"V0370900\",\"city_name\":\"泰安\"},\"V0372900\":{\"city_code\":\"V0372900\",\"city_name\":\"菏泽\"},\"V0370600\":{\"city_code\":\"V0370600\",\"city_name\":\"烟台\"},\"V0372300\":{\"city_code\":\"V0372300\",\"city_name\":\"滨州\"},\"V0372500\":{\"city_code\":\"V0372500\",\"city_name\":\"聊城\"},\"V0370800\":{\"city_code\":\"V0370800\",\"city_name\":\"济宁\"},\"V0370300\":{\"city_code\":\"V0370300\",\"city_name\":\"淄博\"},\"V0372801\":{\"city_code\":\"V0372801\",\"city_name\":\"临沂\"},\"V0370400\":{\"city_code\":\"V0370400\",\"city_name\":\"枣庄\"},\"V0371100\":{\"city_code\":\"V0371100\",\"city_name\":\"日照\"},\"V0371200\":{\"city_code\":\"V0371200\",\"city_name\":\"莱芜\"},\"V0130700\":{\"city_code\":\"V0130700\",\"city_name\":\"张家口\"},\"V0130800\":{\"city_code\":\"V0130800\",\"city_name\":\"承德\"},\"V0130900\":{\"city_code\":\"V0130900\",\"city_name\":\"沧州\"},\"V0130200\":{\"city_code\":\"V0130200\",\"city_name\":\"唐山\"},\"V0130300\":{\"city_code\":\"V0130300\",\"city_name\":\"秦皇岛\"},\"V0130400\":{\"city_code\":\"V0130400\",\"city_name\":\"邯郸\"},\"V0131000\":{\"city_code\":\"V0131000\",\"city_name\":\"廊坊\"},\"V0130600\":{\"city_code\":\"V0130600\",\"city_name\":\"保定\"},\"V0130100\":{\"city_code\":\"V0130100\",\"city_name\":\"石家庄\"},\"V0130500\":{\"city_code\":\"V0130500\",\"city_name\":\"邢台\"},\"V0133000\":{\"city_code\":\"V0133000\",\"city_name\":\"衡水\"},\"V0142700\":{\"city_code\":\"V0142700\",\"city_name\":\"运城\"},\"V0142400\":{\"city_code\":\"V0142400\",\"city_name\":\"晋中\"},\"V0140200\":{\"city_code\":\"V0140200\",\"city_name\":\"大同\"},\"V0140300\":{\"city_code\":\"V0140300\",\"city_name\":\"阳泉\"},\"V0140400\":{\"city_code\":\"V0140400\",\"city_name\":\"长治\"},\"V0142300\":{\"city_code\":\"V0142300\",\"city_name\":\"吕梁\"},\"V0140600\":{\"city_code\":\"V0140600\",\"city_name\":\"朔州\"},\"V0140500\":{\"city_code\":\"V0140500\",\"city_name\":\"晋城\"},\"V0142600\":{\"city_code\":\"V0142600\",\"city_name\":\"临汾\"},\"V0140100\":{\"city_code\":\"V0140100\",\"city_name\":\"太原\"},\"V0142200\":{\"city_code\":\"V0142200\",\"city_name\":\"忻州\"},\"V0340300\":{\"city_code\":\"V0340300\",\"city_name\":\"蚌埠\"},\"V0340500\":{\"city_code\":\"V0340500\",\"city_name\":\"马鞍山\"},\"V0342500\":{\"city_code\":\"V0342500\",\"city_name\":\"宣城\"},\"V0342400\":{\"city_code\":\"V0342400\",\"city_name\":\"六安\"},\"V0343000\":{\"city_code\":\"V0343000\",\"city_name\":\"亳州\"},\"V0342900\":{\"city_code\":\"V0342900\",\"city_name\":\"池州\"},\"V0342200\":{\"city_code\":\"V0342200\",\"city_name\":\"宿州\"},\"V0340400\":{\"city_code\":\"V0340400\",\"city_name\":\"淮南\"},\"V0341000\":{\"city_code\":\"V0341000\",\"city_name\":\"黄山\"},\"V0340600\":{\"city_code\":\"V0340600\",\"city_name\":\"淮北\"},\"V0342100\":{\"city_code\":\"V0342100\",\"city_name\":\"阜阳\"},\"V0340800\":{\"city_code\":\"V0340800\",\"city_name\":\"安庆\"},\"V0340700\":{\"city_code\":\"V0340700\",\"city_name\":\"铜陵\"},\"V0340100\":{\"city_code\":\"V0340100\",\"city_name\":\"合肥\"},\"V0341100\":{\"city_code\":\"V0341100\",\"city_name\":\"滁州\"},\"V0340200\":{\"city_code\":\"V0340200\",\"city_name\":\"芜湖\"},\"V0310000\":{\"city_code\":\"V0310000\",\"city_name\":\"上海\"},\"V0320600\":{\"city_code\":\"V0320600\",\"city_name\":\"南通\"},\"V0321100\":{\"city_code\":\"V0321100\",\"city_name\":\"镇江\"},\"V0320881\":{\"city_code\":\"V0320881\",\"city_name\":\"宿迁\"},\"V0320800\":{\"city_code\":\"V0320800\",\"city_name\":\"淮安\"},\"V0320300\":{\"city_code\":\"V0320300\",\"city_name\":\"徐州\"},\"V0321000\":{\"city_code\":\"V0321000\",\"city_name\":\"扬州\"},\"V0320900\":{\"city_code\":\"V0320900\",\"city_name\":\"盐城\"},\"V0320700\":{\"city_code\":\"V0320700\",\"city_name\":\"连云港\"},\"V0321082\":{\"city_code\":\"V0321082\",\"city_name\":\"泰州\"},\"V0320500\":{\"city_code\":\"V0320500\",\"city_name\":\"苏州\"},\"V0320100\":{\"city_code\":\"V0320100\",\"city_name\":\"南京\"},\"V0320400\":{\"city_code\":\"V0320400\",\"city_name\":\"常州\"},\"V0320200\":{\"city_code\":\"V0320200\",\"city_name\":\"无锡\"},\"V0330500\":{\"city_code\":\"V0330500\",\"city_name\":\"湖州\"},\"V0332600\":{\"city_code\":\"V0332600\",\"city_name\":\"台州\"},\"V0330300\":{\"city_code\":\"V0330300\",\"city_name\":\"温州\"},\"V0330800\":{\"city_code\":\"V0330800\",\"city_name\":\"衢州\"},\"V0330900\":{\"city_code\":\"V0330900\",\"city_name\":\"舟山\"},\"V0330400\":{\"city_code\":\"V0330400\",\"city_name\":\"嘉兴\"},\"V0330600\":{\"city_code\":\"V0330600\",\"city_name\":\"绍兴\"},\"V0330200\":{\"city_code\":\"V0330200\",\"city_name\":\"宁波\"},\"V0330100\":{\"city_code\":\"V0330100\",\"city_name\":\"杭州\"},\"V0330700\":{\"city_code\":\"V0330700\",\"city_name\":\"金华\"},\"V0332500\":{\"city_code\":\"V0332500\",\"city_name\":\"丽水\"},\"V0350600\":{\"city_code\":\"V0350600\",\"city_name\":\"漳州\"},\"V0350200\":{\"city_code\":\"V0350200\",\"city_name\":\"厦门\"},\"V0350400\":{\"city_code\":\"V0350400\",\"city_name\":\"三明\"},\"V0352200\":{\"city_code\":\"V0352200\",\"city_name\":\"宁德\"},\"V0350300\":{\"city_code\":\"V0350300\",\"city_name\":\"莆田\"},\"V0350100\":{\"city_code\":\"V0350100\",\"city_name\":\"福州\"},\"V0352100\":{\"city_code\":\"V0352100\",\"city_name\":\"南平\"},\"V0350500\":{\"city_code\":\"V0350500\",\"city_name\":\"泉州\"},\"V0352600\":{\"city_code\":\"V0352600\",\"city_name\":\"龙岩\"},\"V04601005\":{\"city_code\":\"V04601005\",\"city_name\":\"定安\"},\"V04600031\":{\"city_code\":\"V04600031\",\"city_name\":\"东方\"},\"V04601004\":{\"city_code\":\"V04601004\",\"city_name\":\"万宁\"},\"V04602004\":{\"city_code\":\"V04602004\",\"city_name\":\"五指山\"},\"V04601007\":{\"city_code\":\"V04601007\",\"city_name\":\"屯昌\"},\"V04601006\":{\"city_code\":\"V04601006\",\"city_name\":\"澄迈\"},\"V0460003\":{\"city_code\":\"V0460003\",\"city_name\":\"儋州\"},\"V04602002\":{\"city_code\":\"V04602002\",\"city_name\":\"陵水\"},\"V04601003\":{\"city_code\":\"V04601003\",\"city_name\":\"文昌\"},\"V04602003\":{\"city_code\":\"V04602003\",\"city_name\":\"保亭\"},\"V04600034\":{\"city_code\":\"V04600034\",\"city_name\":\"白沙\"},\"V0460100\":{\"city_code\":\"V0460100\",\"city_name\":\"海口\"},\"V04602001\":{\"city_code\":\"V04602001\",\"city_name\":\"乐东\"},\"V04601002\":{\"city_code\":\"V04601002\",\"city_name\":\"琼海\"},\"V04600032\":{\"city_code\":\"V04600032\",\"city_name\":\"临高\"},\"V04600033\":{\"city_code\":\"V04600033\",\"city_name\":\"昌江\"},\"V0460200\":{\"city_code\":\"V0460200\",\"city_name\":\"三亚\"},\"V04601008\":{\"city_code\":\"V04601008\",\"city_name\":\"琼中\"},\"V0440700\":{\"city_code\":\"V0440700\",\"city_name\":\"江门\"},\"V0441800\":{\"city_code\":\"V0441800\",\"city_name\":\"清远\"},\"V0441201\":{\"city_code\":\"V0441201\",\"city_name\":\"肇庆\"},\"V0441900\":{\"city_code\":\"V0441900\",\"city_name\":\"东莞\"},\"V0441700\":{\"city_code\":\"V0441700\",\"city_name\":\"阳江\"},\"V0440510\":{\"city_code\":\"V0440510\",\"city_name\":\"汕头\"},\"V0440800\":{\"city_code\":\"V0440800\",\"city_name\":\"湛江\"},\"V0441500\":{\"city_code\":\"V0441500\",\"city_name\":\"汕尾\"},\"V0440100\":{\"city_code\":\"V0440100\",\"city_name\":\"广州\"},\"V0441401\":{\"city_code\":\"V0441401\",\"city_name\":\"梅州\"},\"V0440400\":{\"city_code\":\"V0440400\",\"city_name\":\"珠海\"},\"V0442000\":{\"city_code\":\"V0442000\",\"city_name\":\"中山\"},\"V0440600\":{\"city_code\":\"V0440600\",\"city_name\":\"佛山\"},\"V0441281\":{\"city_code\":\"V0441281\",\"city_name\":\"云浮\"},\"V0445201\":{\"city_code\":\"V0445201\",\"city_name\":\"揭阳\"},\"V0441300\":{\"city_code\":\"V0441300\",\"city_name\":\"惠州\"},\"V0440300\":{\"city_code\":\"V0440300\",\"city_name\":\"深圳\"},\"V0445100\":{\"city_code\":\"V0445100\",\"city_name\":\"潮州\"},\"V0440201\":{\"city_code\":\"V0440201\",\"city_name\":\"韶关\"},\"V0441600\":{\"city_code\":\"V0441600\",\"city_name\":\"河源\"},\"V0440901\":{\"city_code\":\"V0440901\",\"city_name\":\"茂名\"},\"V0453000\":{\"city_code\":\"V0453000\",\"city_name\":\"贺州\"},\"V0450500\":{\"city_code\":\"V0450500\",\"city_name\":\"北海\"},\"V0450200\":{\"city_code\":\"V0450200\",\"city_name\":\"柳州\"},\"V0452700\":{\"city_code\":\"V0452700\",\"city_name\":\"河池\"},\"V0452800\":{\"city_code\":\"V0452800\",\"city_name\":\"钦州\"},\"V0453200\":{\"city_code\":\"V0453200\",\"city_name\":\"崇左\"},\"V0452900\":{\"city_code\":\"V0452900\",\"city_name\":\"贵港\"},\"V0453100\":{\"city_code\":\"V0453100\",\"city_name\":\"来宾\"},\"V0452500\":{\"city_code\":\"V0452500\",\"city_name\":\"玉林\"},\"V0450300\":{\"city_code\":\"V0450300\",\"city_name\":\"桂林\"},\"V0450100\":{\"city_code\":\"V0450100\",\"city_name\":\"南宁\"},\"V0450400\":{\"city_code\":\"V0450400\",\"city_name\":\"梧州\"},\"V0450600\":{\"city_code\":\"V0450600\",\"city_name\":\"防城港\"},\"V0452600\":{\"city_code\":\"V0452600\",\"city_name\":\"百色\"},\"V0632300\":{\"city_code\":\"V0632300\",\"city_name\":\"黄南自治州\"},\"V0632200\":{\"city_code\":\"V0632200\",\"city_name\":\"海北自治州\"},\"V0632600\":{\"city_code\":\"V0632600\",\"city_name\":\"果洛自治州\"},\"V0632700\":{\"city_code\":\"V0632700\",\"city_name\":\"玉树自治州\"},\"V0632801\":{\"city_code\":\"V0632801\",\"city_name\":\"格尔木\"},\"V0630100\":{\"city_code\":\"V0630100\",\"city_name\":\"西宁\"},\"V0632500\":{\"city_code\":\"V0632500\",\"city_name\":\"海南自治州\"},\"V0632100\":{\"city_code\":\"V0632100\",\"city_name\":\"海东地区\"},\"V0632800\":{\"city_code\":\"V0632800\",\"city_name\":\"海西自治州\"},\"V0420700\":{\"city_code\":\"V0420700\",\"city_name\":\"鄂州\"},\"V0422401\":{\"city_code\":\"V0422401\",\"city_name\":\"江汉\"},\"V0422800\":{\"city_code\":\"V0422800\",\"city_name\":\"恩施\"},\"V0422100\":{\"city_code\":\"V0422100\",\"city_name\":\"黄冈\"},\"V0422300\":{\"city_code\":\"V0422300\",\"city_name\":\"咸宁\"},\"V0420800\":{\"city_code\":\"V0420800\",\"city_name\":\"荆门\"},\"V0420500\":{\"city_code\":\"V0420500\",\"city_name\":\"宜昌\"},\"V0422600\":{\"city_code\":\"V0422600\",\"city_name\":\"十堰\"},\"V0420900\":{\"city_code\":\"V0420900\",\"city_name\":\"孝感\"},\"V0422400\":{\"city_code\":\"V0422400\",\"city_name\":\"荆州\"},\"V0420681\":{\"city_code\":\"V0420681\",\"city_name\":\"随州\"},\"V0420600\":{\"city_code\":\"V0420600\",\"city_name\":\"襄阳\"},\"V0420200\":{\"city_code\":\"V0420200\",\"city_name\":\"黄石\"},\"V0420100\":{\"city_code\":\"V0420100\",\"city_name\":\"武汉\"},\"V0430600\":{\"city_code\":\"V0430600\",\"city_name\":\"岳阳\"},\"V0430800\":{\"city_code\":\"V0430800\",\"city_name\":\"张家界\"},\"V0430300\":{\"city_code\":\"V0430300\",\"city_name\":\"湘潭\"},\"V0430200\":{\"city_code\":\"V0430200\",\"city_name\":\"株洲\"},\"V0431000\":{\"city_code\":\"V0431000\",\"city_name\":\"郴州\"},\"V0431200\":{\"city_code\":\"V0431200\",\"city_name\":\"怀化\"},\"V0430100\":{\"city_code\":\"V0430100\",\"city_name\":\"长沙\"},\"V0430700\":{\"city_code\":\"V0430700\",\"city_name\":\"常德\"},\"V0430400\":{\"city_code\":\"V0430400\",\"city_name\":\"衡阳\"},\"V0432500\":{\"city_code\":\"V0432500\",\"city_name\":\"娄底\"},\"V0431100\":{\"city_code\":\"V0431100\",\"city_name\":\"永州\"},\"V0433100\":{\"city_code\":\"V0433100\",\"city_name\":\"湘西自治州\"},\"V0430900\":{\"city_code\":\"V0430900\",\"city_name\":\"益阳\"},\"V0430500\":{\"city_code\":\"V0430500\",\"city_name\":\"邵阳\"},\"V0362400\":{\"city_code\":\"V0362400\",\"city_name\":\"吉安\"},\"V0360100\":{\"city_code\":\"V0360100\",\"city_name\":\"南昌\"},\"V0360500\":{\"city_code\":\"V0360500\",\"city_name\":\"新余\"},\"V0362500\":{\"city_code\":\"V0362500\",\"city_name\":\"抚州\"},\"V0360600\":{\"city_code\":\"V0360600\",\"city_name\":\"鹰潭\"},\"V0360200\":{\"city_code\":\"V0360200\",\"city_name\":\"景德镇\"},\"V0360400\":{\"city_code\":\"V0360400\",\"city_name\":\"九江\"},\"V0362100\":{\"city_code\":\"V0362100\",\"city_name\":\"赣州\"},\"V0362233\":{\"city_code\":\"V0362233\",\"city_name\":\"上饶\"},\"V0362200\":{\"city_code\":\"V0362200\",\"city_name\":\"宜春\"},\"V0360300\":{\"city_code\":\"V0360300\",\"city_name\":\"萍乡\"},\"V0410800\":{\"city_code\":\"V0410800\",\"city_name\":\"焦作\"},\"V0412880\":{\"city_code\":\"V0412880\",\"city_name\":\"济源\"},\"V0412901\":{\"city_code\":\"V0412901\",\"city_name\":\"南阳\"},\"V0410700\":{\"city_code\":\"V0410700\",\"city_name\":\"新乡\"},\"V0410600\":{\"city_code\":\"V0410600\",\"city_name\":\"鹤壁\"},\"V0411100\":{\"city_code\":\"V0411100\",\"city_name\":\"漯河\"},\"V0410200\":{\"city_code\":\"V0410200\",\"city_name\":\"开封\"},\"V0410100\":{\"city_code\":\"V0410100\",\"city_name\":\"郑州\"},\"V0412801\":{\"city_code\":\"V0412801\",\"city_name\":\"驻马店\"},\"V0411200\":{\"city_code\":\"V0411200\",\"city_name\":\"三门峡\"},\"V0410400\":{\"city_code\":\"V0410400\",\"city_name\":\"平顶山\"},\"V0411000\":{\"city_code\":\"V0411000\",\"city_name\":\"许昌\"},\"V0410900\":{\"city_code\":\"V0410900\",\"city_name\":\"濮阳\"},\"V0413000\":{\"city_code\":\"V0413000\",\"city_name\":\"信阳\"},\"V0410500\":{\"city_code\":\"V0410500\",\"city_name\":\"安阳\"},\"V0412800\":{\"city_code\":\"V0412800\",\"city_name\":\"济源\"},\"V0412700\":{\"city_code\":\"V0412700\",\"city_name\":\"周口\"},\"V0410300\":{\"city_code\":\"V0410300\",\"city_name\":\"洛阳\"},\"V0412300\":{\"city_code\":\"V0412300\",\"city_name\":\"商丘\"},\"V0540100\":{\"city_code\":\"V0540100\",\"city_name\":\"拉萨\"},\"V0542100\":{\"city_code\":\"V0542100\",\"city_name\":\"昌都\"},\"V0542300\":{\"city_code\":\"V0542300\",\"city_name\":\"日喀则\"},\"V0542500\":{\"city_code\":\"V0542500\",\"city_name\":\"阿里\"},\"V0542600\":{\"city_code\":\"V0542600\",\"city_name\":\"林芝\"},\"V0542200\":{\"city_code\":\"V0542200\",\"city_name\":\"山南\"},\"V0542400\":{\"city_code\":\"V0542400\",\"city_name\":\"那曲\"},\"V0511000\":{\"city_code\":\"V0511000\",\"city_name\":\"内江\"},\"V0510600\":{\"city_code\":\"V0510600\",\"city_name\":\"德阳\"},\"V0513700\":{\"city_code\":\"V0513700\",\"city_name\":\"巴中\"},\"V0513800\":{\"city_code\":\"V0513800\",\"city_name\":\"眉山\"},\"V0510500\":{\"city_code\":\"V0510500\",\"city_name\":\"泸州\"},\"V0510800\":{\"city_code\":\"V0510800\",\"city_name\":\"广元\"},\"V0512500\":{\"city_code\":\"V0512500\",\"city_name\":\"宜宾\"},\"V0513200\":{\"city_code\":\"V0513200\",\"city_name\":\"阿坝自治州\"},\"V0513000\":{\"city_code\":\"V0513000\",\"city_name\":\"达州\"},\"V0511300\":{\"city_code\":\"V0511300\",\"city_name\":\"南充\"},\"V0510900\":{\"city_code\":\"V0510900\",\"city_name\":\"遂宁\"},\"V0510300\":{\"city_code\":\"V0510300\",\"city_name\":\"自贡\"},\"V0513900\":{\"city_code\":\"V0513900\",\"city_name\":\"资阳\"},\"V0513100\":{\"city_code\":\"V0513100\",\"city_name\":\"雅安\"},\"V0510400\":{\"city_code\":\"V0510400\",\"city_name\":\"攀枝花\"},\"V0513400\":{\"city_code\":\"V0513400\",\"city_name\":\"凉山自治州\"},\"V0510100\":{\"city_code\":\"V0510100\",\"city_name\":\"成都\"},\"V0511100\":{\"city_code\":\"V0511100\",\"city_name\":\"乐山\"},\"V0513300\":{\"city_code\":\"V0513300\",\"city_name\":\"甘孜自治州\"},\"V0513600\":{\"city_code\":\"V0513600\",\"city_name\":\"广安\"},\"V0510700\":{\"city_code\":\"V0510700\",\"city_name\":\"绵阳\"},\"V0500000\":{\"city_code\":\"V0500000\",\"city_name\":\"重庆\"},\"V0610100\":{\"city_code\":\"V0610100\",\"city_name\":\"西安\"},\"V0610200\":{\"city_code\":\"V0610200\",\"city_name\":\"铜川\"},\"V0612501\":{\"city_code\":\"V0612501\",\"city_name\":\"商洛\"},\"V0610400\":{\"city_code\":\"V0610400\",\"city_name\":\"咸阳\"},\"V0612101\":{\"city_code\":\"V0612101\",\"city_name\":\"渭南\"},\"V0610300\":{\"city_code\":\"V0610300\",\"city_name\":\"宝鸡\"},\"V0612401\":{\"city_code\":\"V0612401\",\"city_name\":\"安康\"},\"V0612301\":{\"city_code\":\"V0612301\",\"city_name\":\"汉中\"},\"V0612701\":{\"city_code\":\"V0612701\",\"city_name\":\"榆林\"},\"V0612601\":{\"city_code\":\"V0612601\",\"city_name\":\"延安\"},\"V0522200\":{\"city_code\":\"V0522200\",\"city_name\":\"铜仁\"},\"V0520200\":{\"city_code\":\"V0520200\",\"city_name\":\"六盘水\"},\"V0522500\":{\"city_code\":\"V0522500\",\"city_name\":\"安顺\"},\"V0522100\":{\"city_code\":\"V0522100\",\"city_name\":\"遵义\"},\"V0523100\":{\"city_code\":\"V0523100\",\"city_name\":\"黔东南州\"},\"V0520100\":{\"city_code\":\"V0520100\",\"city_name\":\"贵阳\"},\"V0522400\":{\"city_code\":\"V0522400\",\"city_name\":\"毕节\"},\"V0522900\":{\"city_code\":\"V0522900\",\"city_name\":\"黔西南州\"},\"V0523200\":{\"city_code\":\"V0523200\",\"city_name\":\"黔南州\"},\"V0532900\":{\"city_code\":\"V0532900\",\"city_name\":\"大理\"},\"V0533300\":{\"city_code\":\"V0533300\",\"city_name\":\"怒江\"},\"V0533600\":{\"city_code\":\"V0533600\",\"city_name\":\"普洱\"},\"V0532600\":{\"city_code\":\"V0532600\",\"city_name\":\"文山\"},\"V0530100\":{\"city_code\":\"V0530100\",\"city_name\":\"昆明\"},\"V0532800\":{\"city_code\":\"V0532800\",\"city_name\":\"西双版纳\"},\"V0532300\":{\"city_code\":\"V0532300\",\"city_name\":\"楚雄\"},\"V0533500\":{\"city_code\":\"V0533500\",\"city_name\":\"临沧\"},\"V0533100\":{\"city_code\":\"V0533100\",\"city_name\":\"德宏\"},\"V0532400\":{\"city_code\":\"V0532400\",\"city_name\":\"玉溪\"},\"V0532200\":{\"city_code\":\"V0532200\",\"city_name\":\"曲靖\"},\"V0532100\":{\"city_code\":\"V0532100\",\"city_name\":\"昭通\"},\"V0533000\":{\"city_code\":\"V0533000\",\"city_name\":\"保山\"},\"V0533400\":{\"city_code\":\"V0533400\",\"city_name\":\"迪庆\"},\"V0532500\":{\"city_code\":\"V0532500\",\"city_name\":\"红河\"},\"V0533200\":{\"city_code\":\"V0533200\",\"city_name\":\"丽江\"},\"V0622600\":{\"city_code\":\"V0622600\",\"city_name\":\"陇南\"},\"V0623000\":{\"city_code\":\"V0623000\",\"city_name\":\"甘南\"},\"V0620400\":{\"city_code\":\"V0620400\",\"city_name\":\"白银\"},\"V0620200\":{\"city_code\":\"V0620200\",\"city_name\":\"嘉峪关\"},\"V0620500\":{\"city_code\":\"V0620500\",\"city_name\":\"天水\"},\"V0620100\":{\"city_code\":\"V0620100\",\"city_name\":\"兰州\"},\"V0622901\":{\"city_code\":\"V0622901\",\"city_name\":\"临夏\"},\"V0622100\":{\"city_code\":\"V0622100\",\"city_name\":\"酒泉\"},\"V0622400\":{\"city_code\":\"V0622400\",\"city_name\":\"定西\"},\"V0622800\":{\"city_code\":\"V0622800\",\"city_name\":\"庆阳\"},\"V0622201\":{\"city_code\":\"V0622201\",\"city_name\":\"张掖\"},\"V0622300\":{\"city_code\":\"V0622300\",\"city_name\":\"武威\"},\"V0620300\":{\"city_code\":\"V0620300\",\"city_name\":\"金昌\"},\"V0622700\":{\"city_code\":\"V0622700\",\"city_name\":\"平凉\"},\"V0640200\":{\"city_code\":\"V0640200\",\"city_name\":\"石嘴山\"},\"V0640100\":{\"city_code\":\"V0640100\",\"city_name\":\"银川\"},\"V0642300\":{\"city_code\":\"V0642300\",\"city_name\":\"中卫\"},\"V0642100\":{\"city_code\":\"V0642100\",\"city_name\":\"吴忠\"},\"V0642200\":{\"city_code\":\"V0642200\",\"city_name\":\"固原\"},\"V0650100\":{\"city_code\":\"V0650100\",\"city_name\":\"乌鲁木齐\"},\"V0654201\":{\"city_code\":\"V0654201\",\"city_name\":\"塔城\"},\"V0650500\":{\"city_code\":\"V0650500\",\"city_name\":\"巴州\"},\"V0653201\":{\"city_code\":\"V0653201\",\"city_name\":\"和田\"},\"V0650200\":{\"city_code\":\"V0650200\",\"city_name\":\"克拉玛依\"},\"V0653101\":{\"city_code\":\"V0653101\",\"city_name\":\"喀什\"},\"V0654001\":{\"city_code\":\"V0654001\",\"city_name\":\"奎屯\"},\"V0650600\":{\"city_code\":\"V0650600\",\"city_name\":\"克州\"},\"V0652201\":{\"city_code\":\"V0652201\",\"city_name\":\"哈密\"},\"V0652901\":{\"city_code\":\"V0652901\",\"city_name\":\"阿克苏\"},\"V0650400\":{\"city_code\":\"V0650400\",\"city_name\":\"伊犁\"},\"V0652101\":{\"city_code\":\"V0652101\",\"city_name\":\"吐鲁番\"},\"V0652301\":{\"city_code\":\"V0652301\",\"city_name\":\"昌吉\"},\"V0650300\":{\"city_code\":\"V0650300\",\"city_name\":\"博州\"},\"V0659001\":{\"city_code\":\"V0659001\",\"city_name\":\"石河子\"},\"V0654301\":{\"city_code\":\"V0654301\",\"city_name\":\"阿勒泰\"},\"V0220300\":{\"city_code\":\"V0220300\",\"city_name\":\"四平\"},\"V0220400\":{\"city_code\":\"V0220400\",\"city_name\":\"辽源\"},\"V0220600\":{\"city_code\":\"V0220600\",\"city_name\":\"白山\"},\"V0220700\":{\"city_code\":\"V0220700\",\"city_name\":\"松原\"},\"V0220200\":{\"city_code\":\"V0220200\",\"city_name\":\"吉林\"},\"V0220800\":{\"city_code\":\"V0220800\",\"city_name\":\"白城\"},\"V0220100\":{\"city_code\":\"V0220100\",\"city_name\":\"长春\"},\"V0222400\":{\"city_code\":\"V0222400\",\"city_name\":\"延边\"},\"V0220500\":{\"city_code\":\"V0220500\",\"city_name\":\"通化\"},\"V0211000\":{\"city_code\":\"V0211000\",\"city_name\":\"辽阳\"},\"V0210800\":{\"city_code\":\"V0210800\",\"city_name\":\"营口\"},\"V0211100\":{\"city_code\":\"V0211100\",\"city_name\":\"盘锦\"},\"V0210600\":{\"city_code\":\"V0210600\",\"city_name\":\"丹东\"},\"V0210900\":{\"city_code\":\"V0210900\",\"city_name\":\"阜新\"},\"V0210400\":{\"city_code\":\"V0210400\",\"city_name\":\"抚顺\"},\"V0210500\":{\"city_code\":\"V0210500\",\"city_name\":\"本溪\"},\"V0211400\":{\"city_code\":\"V0211400\",\"city_name\":\"葫芦岛\"},\"V0211300\":{\"city_code\":\"V0211300\",\"city_name\":\"朝阳\"},\"V0210700\":{\"city_code\":\"V0210700\",\"city_name\":\"锦州\"},\"V0210200\":{\"city_code\":\"V0210200\",\"city_name\":\"大连\"},\"V0210100\":{\"city_code\":\"V0210100\",\"city_name\":\"沈阳\"},\"V0211200\":{\"city_code\":\"V0211200\",\"city_name\":\"铁岭\"},\"V0210300\":{\"city_code\":\"V0210300\",\"city_name\":\"鞍山\"},\"V0230100\":{\"city_code\":\"V0230100\",\"city_name\":\"哈尔滨\"},\"V0232700\":{\"city_code\":\"V0232700\",\"city_name\":\"大兴安岭\"},\"V0230800\":{\"city_code\":\"V0230800\",\"city_name\":\"佳木斯\"},\"V0230300\":{\"city_code\":\"V0230300\",\"city_name\":\"鸡西\"},\"V0230700\":{\"city_code\":\"V0230700\",\"city_name\":\"伊春\"},\"V0230200\":{\"city_code\":\"V0230200\",\"city_name\":\"齐齐哈尔\"},\"V0230500\":{\"city_code\":\"V0230500\",\"city_name\":\"双鸭山\"},\"V0232300\":{\"city_code\":\"V0232300\",\"city_name\":\"绥化\"},\"V0230400\":{\"city_code\":\"V0230400\",\"city_name\":\"鹤岗\"},\"V0230600\":{\"city_code\":\"V0230600\",\"city_name\":\"大庆\"},\"V0231000\":{\"city_code\":\"V0231000\",\"city_name\":\"牡丹江\"},\"V0231100\":{\"city_code\":\"V0231100\",\"city_name\":\"黑河\"},\"V0230900\":{\"city_code\":\"V0230900\",\"city_name\":\"七台河\"},\"V0131100\":{\"city_code\":\"V0131100\",\"city_name\":\"雄安\"}}"
city_list = json.loads(city_list)
# print(city_list)
names = jsonpath.jsonpath(city_list,'$..city_name')
# print(names,len(names))
codes = jsonpath.jsonpath(city_list,'$..city_code')
# print(codes,len(codes))
dict1 = {}
for i in range(len(names)):
    dict1[codes[i]] = names[i]
# print(dict1)

for sourcecity in bili['data']:
    # print(sourcecity)
    for citycode in dict1.keys():
        if sourcecity["source_city"] == citycode:
            sourcecity["source_city"] = dict1[citycode]
    print(sourcecity)

执行结果:
JS逆向之人口流动态势_第16张图片
写到这里已经写不动了,今天身体状态不太好,有点发烧头痛,四肢无力,文中若有不足之处还请各位博友多多海涵,也欢迎大佬批评指正

愿神明偏爱,一切从欢

你可能感兴趣的:(爬虫,JS逆向,数据加密,爬虫)