V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Dark1X
V2EX  ›  问与答

AJAX GET 请求 URL 最后面缀的那个类似于时间戳的参数是什么啊?

  •  
  •   Dark1X · 2019-05-06 09:55:47 +08:00 · 2164 次点击
    这是一个创建于 2054 天前的主题,其中的信息可能已经有所发展或是发生改变。

    AJAX GET 请求 URL 最后面缀的那个类似于时间戳的参数是什么啊?

    如下示例:
    URL: https://wk588.com/tools/json/kjdbapi.php?n=Bitcoin&dj=0.4&=1557104461614
    这个 URL 中,
    =1557104461614,这个参数是什么?看起来像是时间戳,但实际上并不是时间戳。我重复刷新页面这个类似于时间戳的数字有时候会自动加 1,有时候干脆重新生成一个以 15571 开头的其他数字。

    追加问题:
    现在我需要使用 Python Requests 模块来做爬虫,发现请求 "https://wk588.com/tools/json/kjdbapi.php?n=Bitcoin&dj=0.4&_=1557104461614" 这个 URL 获取到的数据与浏览器获取到的数据不一致。不明白是为什么。

    12 条回复    2019-05-06 15:34:37 +08:00
    noe132
        1
    noe132  
       2019-05-06 10:01:16 +08:00
    ie 会自作主张缓存 ajax 的 get 请求。
    url 变一下就不会每次请求一样的 url,就不会出现缓存问题了。
    Dark1X
        2
    Dark1X  
    OP
       2019-05-06 10:13:51 +08:00
    我用 Chrome 和 Firefox 也发现 URL 后面会自动追加这个数字了。
    Dark1X
        3
    Dark1X  
    OP
       2019-05-06 10:19:28 +08:00
    我理解这个数字是为了防止浏览器缓存用的,只是不知道这个数字是在什么时候加上去的?
    猜想:是 jQuery 自动加上去的吗?
    追问:
    1. 这个类似时间戳的数字的生成逻辑在哪里、在 Python 爬虫里这个数字的值该如何构造?
    2. 在 Python 爬虫中我尝试了随机修改这个数字,发现与浏览器获得的数据还是不一致。爬虫获取数据的时间与浏览器获取数据的时间相差不到 10 秒,而且我在短时间内再次刷新浏览器页面,发现两次刷新浏览器页面呈现的数据没有变化,所以排除在爬虫获取数据期间与浏览器获取数据期间服务端后台数据发生变化的可能。
    ochatokori
        4
    ochatokori  
       2019-05-06 10:28:42 +08:00 via Android   ❤️ 1
    这是前端开发人员加上去的,不是 jq 或者 ajax 自己加上去的

    作用可能有两个
    一个是 1 楼说的缓存问题
    一个是可能是签名的参数

    你写爬虫直接生成时间戳就好了,不是要和浏览器一样,特别是当这个只是用来防止缓存的时候你甚至可以不要这个参数
    nekoneko
        5
    nekoneko  
       2019-05-06 10:37:20 +08:00
    大部分情况下是 1 楼说的那样
    w292614191
        6
    w292614191  
       2019-05-06 10:39:34 +08:00
    jq 并不会做额外的事情。
    一般都是 UI、框架、某些控件之类的做的。
    Dark1X
        7
    Dark1X  
    OP
       2019-05-06 10:39:51 +08:00
    @ochatokori 感谢
    我在测试的时候发现爬虫不加这个签名参数也是可以的。
    现在的问题是浏览器上面获取的的数据与爬虫获取到的数据不一致。你有空的话复现帮我看看呀,麻烦了。
    浏览器访问: https://wk588.com/tools/kuangjiduibi
    Dark1X
        8
    Dark1X  
    OP
       2019-05-06 10:43:44 +08:00
    @ochatokori 感谢
    我在测试的时候发现爬虫不加这个签名参数也是可以的。
    现在的问题是浏览器上面获取的的数据与爬虫获取到的数据不一致。你有空的话复现帮我看看呀,麻烦了。
    浏览器访问: https://删除这几个字 wk588.com/tools/kuangjiduibi
    爬虫源码:
    ```
    #!/usr/bin/env python3
    # coding=utf-8

    import requests
    import json
    import re

    def getPage(url):
    response = requests.get(url=url)
    return response.text

    if __name__ == '__main__':
    headers = {
    'User-Agent':'Mozilla/6.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.84 Safari/537.36',
    'Accept-Encoding': 'gzip, deflate, sdch',
    'Accept-Language': 'en-GB,en-US;q=0.8,en;q=0.6'
    }

    jsonData = getPage('https://删除这几个字 wk588.com/tools/json/qbkuanjiapi.php?n=Bitcoin&dj=0.4&_=1557106802754')
    #print(json.loads(jsonData))
    minerInfoList = json.loads(jsonData)['data']

    # 矿机名称列表
    nameList = []
    # 算力列表
    hashRateList = []
    # 功耗列表
    powerConsumptionList = []
    # 能耗比列表 HashPowerConsumptionRatio
    hpcRatioList = []
    # 日产值列表
    dailyEarnList = []
    # 日电费列表
    powerChargeList = []
    # 电费占比列表
    powerChargeRateList = []
    # 每日净收益列表
    dailyRetainedProfitList = []
    for miner in minerInfoList:
    if miner['sh'] == 'SHA-256':
    minerName = re.sub('<\w.*?\s.*?>.*?','',miner['name'],2)
    nameList.append(minerName)
    hashRateList.append(miner['kjsn']['xs'])
    powerConsumptionList.append(miner['kjgh']['xs'])
    hpcRatioList.append(miner['kjdwgh']['xs'])
    dailyEarnList.append(miner['rcz']['xs'])
    powerChargeList.append(miner['rcdf']['xs'])
    powerChargeRateList.append(str(miner['dfzb']['sz'])+'%')
    dailyRetainedProfitList.append('¥'+str(miner['rcsy']['sz']))

    print(len(nameList))

    for i in range(len(nameList)):
    print('%-20s' % nameList[i] + '\t' + hashRateList[i] + '\t\t' + powerConsumptionList[i] + '\t\t' + dailyEarnList[i])
    ```
    Dark1X
        9
    Dark1X  
    OP
       2019-05-06 10:46:11 +08:00
    ochatokori
        10
    ochatokori  
       2019-05-06 11:23:58 +08:00 via Android
    @Dark1X 我不太会 python 和爬虫,如果你确认你的请求没错的话可能遇到高级反爬:假数据( v 站就是这样
    Dark1X
        11
    Dark1X  
    OP
       2019-05-06 11:29:40 +08:00
    @ochatokori 高级反爬? 看样子应该试试开发个 Chrome 插件抓取渲染之后的数据了。
    BCy66drFCvk1Ou87
        12
    BCy66drFCvk1Ou87  
       2019-05-06 15:34:37 +08:00
    用来欺骗浏览器,获取新数据
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5715 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:08 · PVG 14:08 · LAX 22:08 · JFK 01:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.