一、参数获取
要实现发送请求抢券,需要获取券的URL,并定制请求头Request Headers,下面所有参数都来自Chrome的开发者工具。大多浏览器都有开发者工具,可以按需选择。
准备步骤:登录网站——进入抢券页面——打开开发者工具(Chrome的快捷键是F12)——切换到Network栏
在上面准备步骤的基础上,点击想要抢的券,这时Name栏底部会出现一个新的链接,点击这个链接,而我们需要的参数就来自Header中,复制Request URL:https://act-/couponSend.html? ......
获取Cookie:
也是在上面这个页面中,下翻在Request Header中,有一个Cookie的参数,复制下来
ipLoc-djd=1-72-2799-0; ipLocation=%u5317%u4EAC; areaId=1; ......
获取券的Referer:复制Referer参数
/act/hznk5FbYfOTiEp.html
有些时候要同时抢几张券,所以把参数改成了列表
# 券的URL
requestUrls = ["https://act-/couponSend.html?callback=jQuery2891171&roleId=8781460&key=48b40c64619a4bc9a3912c98d5a94fed&_=1510055639531","https://act-/couponSend.html?callback=jQuery6218594&roleId=8725660&key=a606cfe7c5b045d1b5e58b43a59fd9b1&_=1510056463018"]
# 券的Referer
referers = ["/act/bD1USlOE8n.html","/act/bD1USlOE8n.html"]
# 如果到预定时间就开始发送请求,然后打印结果
if now == scheduled_time:
for i in range(len(requestUrls)):
session.headers['Referer'] = referers[i]
r = session.get(requestUrls[i])
print(r.text)
break
二、参考代码1
import requests
import datetime
# 抢券的时间
scheduled_time = "-11-07 22:00"
# 券的URL
requestUrls = ["https://act-/couponSend.html?callback=jQuery8299904&roleId=8875111&key=a9185b7963d74999bdfde0ab214b31bb&_=1510062919603","https://act-/couponSend.html?callback=jQuery9197213&roleId=8817197&key=7b9cef8b76f64c3ba2474e810382d69b&_=1510062967022"]
# 券的Referer
referers = ["/act/bD1USlOE8n.html","/act/bD1USlOE8n.html"]
# 浏览器及版本
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'
# 将cookie转为字典
def get_cookie():
with open("cookie.txt") as f:
cookies = {}
for line in f.read().split(';'):
name, value = line.strip().split('=', 1)
cookies[name] = value
return cookies
# 配置Session的参数
session = requests.Session()
session.headers['User-Agent'] = user_agent
session.cookies = requests.utils.cookiejar_from_dict(get_cookie())
# 开始抢券
def getCoupon():
print('等待抢券中......')
while (True):
# 当前时间
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M')
# 如果到预定时间就开始发送请求,然后打印结果
if now == scheduled_time:
for i in range(len(requestUrls)):
session.headers['Referer'] = referers[i]
r = session.get(requestUrls[i])
print(r.text)
break
if __name__ == '__main__':
getCoupon()
三、参考代码2
#coding:utf-8
#import scrapy
from selenium import webdriver
import time
import datetime
class JDQUAN(object):
def __init__(self,url):
self.driver=webdriver.Firefox()
self.driver.get(url)
def login_jd(self,num,pwd):
self.driver.find_element_by_link_text('你好,请登录').click()
time.sleep(5)
self.driver.find_element_by_link_text('账户登录').click()
time.sleep(3)
self.driver.find_element_by_id('loginname').send_keys(num)
self.driver.find_element_by_id('nloginpwd').send_keys(pwd)
time.sleep(3)
self.driver.find_element_by_id('loginsubmit').click()
def buy_on_time(self,buytime,quan_link):
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
pre = datetime.datetime.strptime(buytime, '%Y-%m-%d %H:%M:%S') - datetime.timedelta(seconds=40)
pre = pre.strftime('%Y-%m-%d %H:%M:%S')
if pre == now:
self.driver.refresh()
if now == buytime:
#self.driver.find_element_by_class_name(quan_link).click()
self.driver.get(quan_link)
time.sleep(3)
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
print('successful!!!')
break
def start(self,buytime,quan_link):
num='****'
pwd='********'
self.login_jd(num,pwd)
self.buy_on_time(buytime,quan_link)
jd=JDQUAN('/act/L8mwRbMeIap3kCAg.html')
jd.start('-01-24 20:05:00','/ilink/couponSendFront/send_index.action?key=3472bd7400804b01b6d5bd8162289d85&roleId=10117929&to=/act/L8mwRbMeIap3kCAg.html')
#超市