我是如何使用 Python 优雅的薅到网易uu的羊毛的

外服会员活动价, 需要准点限量抢购, 寻思更优雅的方法

ref: https://shop.uu.163.com/app/mall/oversea/detail?type=561

分析下单页面, 点击下单实则进行 Ajax 请求
祭出 requests
对这个 Ajax 进行狂轰滥炸, 本来想加个延时的, 但是, 男人要猛一点才有魅力

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

import requests


headers = {
'Cookie': 'uid=*******************;',
'X-Requested-With': 'XMLHttpRequest',
}

url = 'https://shop.uu.163.com/app/mall/order/oversea/create?good_type=561&pay_type=2'

i = 0
while 1:
i += 1
try:
res = requests.get(url, headers=headers)
except Exception:
continue

json = res.json()
if json != {'error': '很抱歉,兑换物品没有剩余了'}:
print('bingo')
break
print(json, i)

小插曲: 正常情况带上 cookie 就行的, 这里需要多加一个来自 XHR 的头
'X-Requested-With': 'XMLHttpRequest'
也是经过多次实验得出的结论
猜测网易后台有通过类似 phalcon 的 isAjax() 方法判断请求类型

截图纪念, 人生中第二个十年

Chrome F12 的秘密

#shadow-root

什么是 Shadow DOM 呢?

Shadow DOM 是一个 HTML 的新规范,其允许开发者封装自己的 HTML 标签、CSS 样式和 JavaScript 代码。

https://aotu.io/notes/2016/06/24/Shadow-DOM/index.html
https://stackoverflow.com/questions/34119639/what-is-shadow-root
https://github.com/YIXUNFE/blog/issues/10

== $0

当前被选中的元素

https://www.zhihu.com/question/52031439/answer/130097056

http://stackoverflow.com/questions/36999739/what-does-0-double-equals-dollar-zero-mean-in-chrome-developer-tools

Python 强大的模式匹配

一些很 sb 的正则需求, 对子模式要求苛刻
不同情况的子模式顺序不同
这就要用到命名的子模式了

1
2
3
4
5
6
7
8
9
import re

regex = re.match(r'(?P<first>\d+)qwe(?P<last>\d+)', '123qwe321')

print(regex.group(1))
print(regex.group('first'))
print(regex.group(2))
print(regex.group('last'))

1
2
3
4
5
6
7
8
C:\Python34\python.exe E:/python/tmp.py
123
123
321
321

Process finished with exit code 0