如何更频繁地轮询asda网站(bash)

如何更频繁地轮询asda网站(bash),bash,Bash,我制作了一个脚本,用于检查api中的asda home delivery插槽 在这里,我称之为get\u slots.sh 你必须启动tor,如果不启动,那么你必须去掉关于sock5主机名的行(你可以在命令行中用ps看到tor端口号),但是如果你不使用tor,如果他们对你轮询他们的网站感到不安,他们可能会取消你的帐户 很明显,你必须更换顶部的变量 查询参数和api url是通过chrome中的inspector在使用joe public的普通java脚本时发现的,绝密不是 #!/bin/bash

我制作了一个脚本,用于检查api中的asda home delivery插槽

在这里,我称之为
get\u slots.sh

你必须启动tor,如果不启动,那么你必须去掉关于sock5主机名的行(你可以在命令行中用ps看到tor端口号),但是如果你不使用tor,如果他们对你轮询他们的网站感到不安,他们可能会取消你的帐户

很明显,你必须更换顶部的变量

查询参数和api url是通过chrome中的inspector在使用joe public的普通java脚本时发现的,绝密不是

#!/bin/bash

my_postcode="SW1A1AA"  # CHANGEME
account_id=18972357834   # JUST INVENT A NUMBER
order_id=22985263473    # LIKEWISE
ua='user_agent_I_want_to_fake'
my_tor_port=9150

#----------------

#ftype="POPUP"
#ftype="INSTORE_PICKUP"
ftype="DELIVERY"

format="%Y-%m-%dT00:00:00+01:00"
start_date=$(date "+$format")
end_date=$(date -d "+16 days" "+$format")

read -r -d '' data <<EOF
{
    "data": {
        "customer_info": {
            "account_id": "$account_id"
        },
        "end_date": "$end_date",
        "order_info": {
            "line_item_count": 0,
            "order_id": "$order_id",
            "restricted_item_types": [],
            "sub_total_amount": 0,
            "total_quantity": 0,
            "volume": 0,
            "weight": 0
        },
        "reserved_slot_id": "",
        "service_address": {"postcode":"$my_postcode"},
        "service_info": {
            "enable_express": false,
            "fulfillment_type": "$ftype"
        },
        "start_date": "$start_date"
    },
    "requestorigin": "gi"
}
EOF

data=$(echo $data | tr -d ' ')
url='https://groceries.asda.com/api/v3/slot/view'
referer='https://groceries.asda.com/checkout/book-slot?origin=/account/orders'

curl -s \
     --socks5-hostname localhost:$my_tor_port \
     -H "Content-type: application/json; charset=utf-8" \
     -H "Referer: $referer" \
     -A "$ua" \
     -d "$data" \
     $url \
    | python -m json.tool
所以是的,我所做的就是
egrep-B1

哦,是的,我还顽皮的硬编码2020年没有做适当的正则表达式的一年,因为如果这一切仍然是在2020年后,我可能只是饿死无论如何,所以不想过度工程

不管怎样,你可以看到,一旦它已经给我发了邮件,它仍然会继续运行,因为我想存储json文件,以后可能会对它们进行分析,除非我重新启动它,否则它不会再给我发邮件


不管怎样,我的问题是我的脚本每两分钟检查一次,我希望它检查得更频繁,这样我就可以打败别人。

好的,排序好了睡眠120是2分钟,我以为是1.2分钟,对不起,忘了一分钟是60秒,不是100 lol

哦,是的,别担心,我不会每5秒钟做一次,就像


刚才我知道睡眠功能正常,我可以将其更改为60,但这并不比坐在那里的许多人手动加载睡眠功能更频繁相信我……

我很高兴你与大家分享了这一“生活黑客”解决方案,尽管这可能与ASDA的条款和条件有关。您可以对脚本进行一些改进,但见鬼,如果它对您来说足够好,那就太好了。您的问题似乎是“如何更频繁地运行脚本”。为此,我们首先需要知道你是如何运行你的脚本的,你在什么操作系统上,等等@alecxs,在一个简短的搜索之后,我在asda.com上找不到任何提示自动使用他们的站点或服务可能被禁止的内容。我认为OP认识到他使用的工具可能会造成伤害是令人鼓舞的,我们最好帮助他保持效率和低影响,而不是忽视这一点。哈哈,我的同事坐在那里登录,整天按ctrl R重新加载,每次我直接转到api时,服务器必须重新提供所有静态内容,这是什么问题呢??
#!/bin/sh

me="my@email.address"
my_smtp_server="smtp.myisp.net:25"
#------------------------------------

mailed=0
ftmp=/tmp/slots.$$
while true
do
    date
    f=slots/`date +%Y%m%d/%H/%Y-%m-%d_%H%M%S`.json
    d=`dirname $f`
    [ -d $d ] || mkdir -p $d
    ./get_slots.sh > $f
    if egrep -B1 'status.*"AVAILABLE"' $f > $ftmp
    then
        echo "found"
        if [ $mailed -eq 0 ]
        then
            dates=`perl -nle '/start_time.*2020-(..-..T..):/ && print $1' $ftmp`
            mailx \
                -r "$me" -s "asda on $dates lol" \
                -S smtp="$my_smtp_server" "$me" < $ftmp
            echo "mailed"
            mailed=1
        fi
    fi
    sleep 120
done
                        "slot_info": {
                                STUFF
                            "slot_type": null,
                            "start_time": "2020-06-10T19:00:00Z",
                            "status": "AVAILABLE",
                            "total_discount": 0.0,
                            "total_premium": 0.0,
                                MORE STUFF