- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个用 python 编写的脚本,如下所示
#!/bin/env python2.7
# Run around 1059 as early as 1055.
# Polling times vary pick something nice.
# Ghost checkout timer can be changed by
# adjusting for loop range near bottom.
# Fill out personal data in checkout payload dict.
import sys, json, time, requests, urllib2
from datetime import datetime
qty='1'
def UTCtoEST():
current=datetime.now()
return str(current) + ' EST'
print
poll=raw_input("Polling interval? ")
poll=int(poll)
keyword=raw_input("Product name? ").title() # hardwire here by declaring keyword as a string
color=raw_input("Color? ").title() # hardwire here by declaring keyword as a string
sz=raw_input("Size? ").title() # hardwire here by declaring keyword as a string
print
print UTCtoEST(),':: Parsing page...'
def main():
global ID
global variant
global cw
req = urllib2.Request('http://www.supremenewyork.com/mobile_stock.json')
req.add_header('User-Agent', "User-Agent','Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B350 Safari/8536.25")
resp = urllib2.urlopen(req)
data = json.loads(resp.read())
ID=0
for i in range(len(data[u'products_and_categories'].values())):
for j in range(len(data[u'products_and_categories'].values()[i])):
item=data[u'products_and_categories'].values()[i][j]
name=str(item[u'name'].encode('ascii','ignore'))
# SEARCH WORDS HERE
# if string1 in name or string2 in name:
if keyword in name:
# match/(es) detected!
# can return multiple matches but you're
# probably buying for resell so it doesn't matter
myproduct=name
ID=str(item[u'id'])
print UTCtoEST(),'::',name, ID, 'found ( MATCHING ITEM DETECTED )'
if (ID == 0):
# variant flag unchanged - nothing found - rerun
time.sleep(poll)
print UTCtoEST(),':: Reloading and reparsing page...'
main()
else:
print UTCtoEST(),':: Selecting',str(myproduct),'(',str(ID),')'
jsonurl = 'http://www.supremenewyork.com/shop/'+str(ID)+'.json'
req = urllib2.Request(jsonurl)
req.add_header('User-Agent', "User-Agent','Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B350 Safari/8536.25")
resp = urllib2.urlopen(req)
data = json.loads(resp.read())
found=0
for numCW in data['styles']:
# COLORWAY TERMS HERE
# if string1 in numCW['name'] or string2 in numCW['name']:
if color in numCW['name'].title():
for sizes in numCW['sizes']:
# SIZE TERMS HERE
if str(sizes['name'].title()) == sz: # Medium
found=1;
variant=str(sizes['id'])
cw=numCW['name']
print UTCtoEST(),':: Selecting size:', sizes['name'],'(',numCW['name'],')','(',str(sizes['id']),')'
if found ==0:
# DEFAULT CASE NEEDED HERE - EITHER COLORWAY NOT FOUND OR SIZE NOT IN RUN OF PRODUCT
# PICKING FIRST COLORWAY AND LAST SIZE OPTION
print UTCtoEST(),':: Selecting default colorway:',data['styles'][0]['name']
sizeName=str(data['styles'][0]['sizes'][len(data['styles'][0]['sizes'])-1]['name'])
variant=str(data['styles'][0]['sizes'][len(data['styles'][0]['sizes'])-1]['id'])
cw=data['styles'][0]['name']
print UTCtoEST(),':: Selecting default size:',sizeName,'(',variant,')'
main()
session=requests.Session()
addUrl='http://www.supremenewyork.com/shop/'+str(ID)+'/add.json'
addHeaders={
'Host': 'www.supremenewyork.com',
'Accept': 'application/json',
'Proxy-Connection': 'keep-alive',
'X-Requested-With': 'XMLHttpRequest',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-us',
'Content-Type': 'application/x-www-form-urlencoded',
'Origin': 'http://www.supremenewyork.com',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257',
'Referer': 'http://www.supremenewyork.com/mobile'
}
addPayload={
'size': str(variant),
'qty': '1'
}
print UTCtoEST() +' :: Adding product to cart...'
addResp=session.post(addUrl,data=addPayload,headers=addHeaders)
print UTCtoEST() +' :: Checking status code of response...'
if addResp.status_code!=200:
print UTCtoEST() +' ::',addResp.status_code,'Error \nExiting...'
print
sys.exit()
else:
if addResp.json()==[]:
print UTCtoEST() +' :: Response Empty! - Problem Adding to Cart\nExiting...'
print
sys.exit()
print UTCtoEST() +' :: '+str(cw)+' - '+addResp.json()[0]['name']+' - '+ addResp.json()[0]['size_name']+' added to cart!'
checkoutUrl='https://www.supremenewyork.com/checkout.json'
checkoutHeaders={
'host': 'www.supremenewyork.com',
'If-None-Match': '"*"',
'Accept': 'application/json',
'Proxy-Connection': 'keep-alive',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-us',
'Content-Type': 'application/x-www-form-urlencoded',
'Origin': 'http://www.supremenewyork.com',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257',
'Referer': 'http://www.supremenewyork.com/mobile'
}
#################################
# FILL OUT THESE FIELDS AS NEEDED
#################################
checkoutPayload={
'store_credit_id': '',
'from_mobile': '1',
'cookie-sub': '%7B%22'+str(variant)+'%22%3A1%7D', # cookie-sub: eg. {"VARIANT":1} urlencoded
'same_as_billing_address': '1',
'order[billing_name]': 'anon mous', # FirstName LastName
'order[email]': 'anon@mailinator.com', # email@domain.com
'order[tel]': '999-999-9999', # phone-number-here
'order[billing_address]': '123 Seurat lane', # your address
'order[billing_address_2]': '',
'order[billing_zip]': '90210', # zip code
'order[billing_city]': 'Beverly Hills', # city
'order[billing_state]': 'CA', # state
'order[billing_country]': 'USA', # country
'store_address': '1',
'credit_card[type]': 'visa', # master or visa
'credit_card[cnb]': '9999 9999 9999 9999', # credit card number
'credit_card[month]': '01', # expiration month
'credit_card[year]': '2026', # expiration year
'credit_card[vval]': '123', # cvc/cvv
'order[terms]': '0',
'order[terms]': '1'
}
# GHOST CHECKOUT PREVENTION WITH ROLLING PRINT
for i in range(5):
sys.stdout.write("\r" +UTCtoEST()+ ' :: Sleeping for '+str(5-i)+' seconds to avoid ghost checkout...')
sys.stdout.flush()
time.sleep(1)
print
print UTCtoEST()+ ' :: Firing checkout request!'
checkoutResp=session.post(checkoutUrl,data=checkoutPayload,headers=checkoutHeaders)
try:
print UTCtoEST()+ ' :: Checkout',checkoutResp.json()['status'].title()+'!'
except:
print UTCtoEST()+':: Error reading status key of response!'
print checkoutResp.json()
print
print checkoutResp.json()
if checkoutResp.json()['status']=='failed':
print
print '!!!ERROR!!! ::',checkoutResp.json()['errors']
print
当我想运行它时一切正常,但最后它给了我这个错误:
Traceback (most recent call last):
File "/Users/"USERNAME"/Desktop/supreme.py", line 167, in <module>
checkoutResp=session.post(checkoutUrl,data=checkoutPayload,headers=checkoutHeaders)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 522, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 596, in send
r = adapter.send(request, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/adapters.py", line 497, in send
raise SSLError(e, request=request)
SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
最佳答案
从the SSLLabs report可以看出服务器仅支持 TLS 1.2 并且仅支持很少的密码。在您的错误输出中给出类似 /Users/...
的路径,我假设您使用的是 Mac OS X。Mac OS X 附带的 OpenSSL 版本可能由您的 Python 使用是 0.9.8 ,它太旧而无法支持 TLS 1.2。这意味着服务器不会接受来自客户端的 SSL 3.0 或 TLS 1.0 请求。
有关如何通过更新 OpenSSL 版本来解决此问题的信息,请参阅 Updating openssl in python 2.7 .
关于python - 请求.exceptions.SSLError : [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl. c:590),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39937288/
我在 Cloudflare 的域名服务器上有一个域名 example.com。该域指向我的专用服务器的 IP 地址,该服务器运行 CentOS/WHM/cPanel。该站点可访问 - 一切都很好。 我
我正在努力将 SSL 支持添加到我们现有的应用程序中,并已开始考虑向后兼容性。 与我读过的其他帖子不同的一个特殊情况是服务器可能不一定使用 SSL 代码更新。所以我将有一个 SSL 客户端连接到一个对
我有几个 https://*.rest-service.mydomain.com。随着服务数量的增加,我觉得管理 SSL 证书的成本很高。我为 *.mydomain.com 购买了通配符证书。 新添加
我的客户要求我在他的网站上做反向 ssl。但我是这个学期的新手。谁能帮我解决这个问题。 请描述或引用如何做。 最佳答案 查看 this wiki article . In the case of se
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我连接到我的网络服务器上的存储库,但是当我尝试推送我的更改时,它显示:“错误 403:需要 ssl”,但在我的存储库设置中我已经激活了 ssl 选项。 有什么建议吗? 最佳答案 当您连接到存储库时,您
抱歉,如果这听起来像是转储问题,我已经阅读了很多关于 SSL 握手和 SSL 工作原理的文章和文档。我对一件事感到困惑,如果有人能澄清我就太好了。 我知道私钥要保密。但是我已经看到通过在请求中指定私钥
随着物联网越来越主流,越来越需要从硬件发送http请求。 一个主要问题是硬件微 Controller 无法发送 ssl 请求,但大多数服务器/网站/服务都在使用 ssl。 所以,问题是,有没有桥(一个
我有一个 ssl 页面,它还从非 ssl 站点下载头像。我能做些什么来隔离该内容,以便浏览器不会警告用户混合内容吗? 最佳答案 只是一个想法 - 或者: 尝试在头像网站上使用 ssl url,如有必要
我在 Digital Ocean droplet(使用 nginx)上设置了两个域。我已经在其中一个(domain1)中安装了一个 SSL 证书,并且那个证书一切正常。第二个域 (domain2) 不
我收到这个错误: Error frontend: 502 Bad gateway 99.110.244:443 2017/09/28 13:03:51 [error] 34080#34080: *10
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 年前。 Improve
我遇到了一个问题,我正在构建一个 nginx 反向代理以定向到不同 url 路径上的多个微服务。 该系统完全基于 docker,因此开发和生产使用相同的环境。这在安装 SSL 时给我带来了问题,因为
所以我知道要求 SSL 证书和接受之间的根本区别,一个意味着您必须拥有 SSL 证书,另一个意味着您不需要。 在某个网页的 IIS 管理器中,我有以下设置: 我遇到的问题是,当我设置需要 SSL 证书
我今天才发现 .app 域名需要 SSL 证书。我购买它是为了将 DNS 重定向到已经设置了 SSL 证书的站点,所以我的问题是是否可以设置它? 我正在使用 Google Domains,在将合成临时
堆栈 : react ,NGINX 1.14.0,GUnicorn,Django 2.2.8,Python 3.6.9 错误 : 在浏览器:当 React 调用 Django API(当然是在请求头中
假设我在计算机上编辑主机文件以使 google.com 指向我的 VPS 服务器 IP,并且服务器具有通过 Apache 或 Nginx 配置的 google.com 的虚拟主机/服务器 block
我有一个场景,我正在处理用于 URL 路由的 IIS 网站配置。我已添加网站并在服务器上导入所需的证书。 我的情况是(我有多个网站 URL 和两个 SSL 证书 - 如下所示): qatest1.ab
我知道服务器发送的证书无法伪造(仍然存在 MD5 冲突,但成本高昂),但是伪造客户端又如何呢?在中间人攻击中:我们不能告诉服务器我们是合法客户端并从该服务器获取数据并对其进行操作,然后使用合法客户端公
我已通读相关问题,但无法完全找到我要查找的内容。我设置了一个名为“domain.com”的域,并创建了两个子域“client.domain.com”和“client-intern.domain.com
我是一名优秀的程序员,十分优秀!