主要的赚钱方式和倒爷其实是差不多的,自动检测igxe平台上价格与buff相差8.5%以上的饰品,按照历史价格进行一定的过滤,防止翻车,然后自动购买。
2019年经历了十几次的改进以对抗同行的脚本,到11月末确实干不过了,就搁置了。差不多历经8个月,赚了有4w吧。前3个月还是半自动的,后面就改成了全自动。
主要是一开始对自己做的脚本没有信心,怕出bug,经过几个月的测试,有了初步的了解,同时也因为同行速度越来越快,就改为全自动。以下是用python做的脚本,因为python的可移植性属实8行,在其他人的电脑大概率跑不起来。这边我也分享环境。
链接:点这里
提取码:qne6
这是我初学python瞎鸡巴敲的项目,仅供参考。
用于收集URL数据的程序源码
1 # coding:utf-8 2 import requests 3 import json 4 from datetime import datetime 5 import re 6 import threading 7 import time 8 import os 9 import urllib3 10 from appium import webdriver as appwebdriver 11 import itchat 12 from selenium import webdriver 13 from selenium.webdriver import ActionChains 14 from selenium.webdriver.common.keys import Keys 15 from itchat.content import * 16 import smtplib 17 from email.mime.text import MIMEText 18 cookie ='''_ga=GA1.2.1825115838.1564985594; _ntes_nnid=9fb57abcfe13da07759ef54dfce1cf16,1565253919812; _ntes_nuid=9fb57abcfe13da07759ef54dfce1cf16; _gid=GA1.2.1661889417.1566449941; csrf_token=0f98e3f72a0eaa1d3def6557d1698f85c800bb06; game=csgo; _gat_gtag_UA_109989484_1=1; NTES_YD_SESS=mcVtvffuy1B3w_9rE2sUoD7SNzipZpq2_LeArKiEwwfjhziQhoRng7oYaG0u4HhWmRO1rhdsM3r5DjipxqTBQCdqptEedKSlrKtuLtVns8T8LPbfCTEDhSAE33hFxp1dXtMZc7fDeaX5UIzJgcpB7mSTS46SPt7jYZUb5XdgDggD_nkur8JKLGab50GhHqqwExRDIsFL_pmdFxLRmEtG.mA4FqUZXa3Gc0MYwL4AiC6qu; S_INFO=1566483995|0|3&80##|13144266321; P_INFO=13144266321|1566483995|1|netease_buff|00&99|gud&1566451144&netease_buff#gud&440500#10#0#0|&0|null|13144266321; session=1--yGMiLNMb_mjeVKQzv-3wdWQ5SG93aZxYcUK9sbI1URH2045887594; Locale-Supported=zh-Hans''' 19 #手动从谷歌浏览器中的netword获取cookie,复制粘贴 20 header = { 21 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', 22 'Connection': 'keep-alive', 23 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 24 'Cookie': cookie 25 } 26 def getbuffdatagunsurl(): 27 z = open('buffdataknife2', 'w', encoding='utf-8') ################## 28 for i in range(1,83): ################## 29 url = "https://buff.163.com/api/market/goods?game=csgo&page_num="+str(i)+"&category_group=knife&_=1566484015091" ############### 30 #print(url) 31 point = requests.get(url, headers=header, timeout=5) 32 turn = point.content.decode(encoding='gbk', errors='ignore') 33 res = json.loads(turn) 34 for i in res['data']['items']: 35 content = {} 36 content['价格']=i['sell_min_price'] 37 content['goodid']=i['id'] 38 content['name']=i['name'] 39 if float(content['价格'])>200 : 40 goodsid =str(content['goodid']) 41 itemname = content['name'].replace(" ","") 42 hisurl = 'https://buff.163.com/api/market/goods/bill_order?game=csgo&goods_id=' + goodsid 43 tradeurl = 'https://buff.163.com/api/market/goods/sell_order?game=csgo&goods_id=' + goodsid + '&page_num=1&sort_by=default&mode=&allow_tradable_cooldown=1' 44 flag =0 45 point = requests.get(hisurl, headers=header, timeout=5) 46 turn = point.content.decode(encoding='gbk', errors='ignore') 47 res = json.loads(turn) 48 try: 49 if str(res['data']['items'][0]['buyer_pay_time']) == "1566403200" and str(res['data']['items'][1]['buyer_pay_time']) == "1566403200": 50 print(itemname+" "+str(content['价格'])) 51 flag = 1 52 except: 53 print("https://buff.163.com/market/goods?goods_id="+goodsid+"&from=market#tab=history") 54 if flag==1: 55 z.write(tradeurl + ' ') 56 z.write(hisurl + ' ') 57 z.write(itemname+' ') 58 def getigxedatagunsurl(): 59 global itemsdict 60 itemsdict ={} 61 kk = open('buffdataknife2', 'r', encoding='utf-8') ################## 62 igxe = open("igxedataknife2" , 'w' , encoding='utf-8') ################## 63 count = (int)(1617/3) ################## 64 for i in range(0, count): 65 tradeurl = kk.readline() 66 hisurl = kk.readline() 67 itemname = kk.readline() 68 itemsdict[itemname] = 1 69 print(itemname+"BUFF") 70 url = "https://www.igxe.cn/csgo/730?ctg_name=%E5%8C%95%E9%A6%96&is_buying=0&is_stattrak%5B%5D=0&is_stattrak%5B%5D=0&sort=3&ctg_id=5&type_id=0&page_no=1&page_size=2000&rarity_id=0&exterior_id=0&quality_id=0&capsule_id=0&_t=1566576849724" ################## 71 driver = webdriver.Chrome() 72 driver.maximize_window() 73 driver.set_page_load_timeout(20) 74 try: 75 driver.get(url) 76 except: 77 pass 78 for i in range(1,2000): 79 try: 80 namexpath = driver.find_element_by_xpath('//*[@id="center"]/div/div[3]/div/div[2]/a['+str(i)+']/div[3]') 81 urlxpath = driver.find_element_by_xpath('//*[@id="center"]/div/div[3]/div/div[2]/a['+str(i)+']') 82 url = urlxpath.get_attribute('href') 83 goodsid = url.replace("https://www.igxe.cn/product/730/","") 84 name = namexpath.text +" " 85 name = name.replace(" ","") 86 if name in itemsdict.keys(): 87 print(name) 88 igxe.write("https://www.igxe.cn/product/get_product_sales_history/730/"+goodsid+" ") 89 igxe.write("https://www.igxe.cn/product/trade/730/"+goodsid+" ") 90 except Exception as e: 91 print(e) 92 break 93 if __name__ =='__main__': 94 getigxedatagunsurl()
主程序源码
1 # coding:utf-8 2 from multiprocessing import freeze_support 3 import requests 4 import json 5 from datetime import datetime 6 import re 7 import threading 8 import time 9 import os 10 import urllib3 11 import win32com.client 12 from appium import webdriver as appwebdriver 13 import itchat 14 from selenium import webdriver 15 from selenium.webdriver import ActionChains 16 from selenium.webdriver.common.keys import Keys 17 from itchat.content import * 18 import smtplib 19 from email.mime.text import MIMEText 20 ''' 21 购物车检测是否有1w 22 ''' 23 ''' 24 cd D:pythonuff爬虫uff爬虫 25 D: 26 pyinstaller -p D:pythonuff爬虫uff爬虫venvLibsite-packages autobuy_xiaomi8se.py 27 ''' 28 def checktimeout(): 29 global check 30 try: 31 appdriver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.alipay.android.phone.safepaybase:id/key_num_dymic")') 32 check = 1 33 except Exception as e: 34 try: 35 appdriver.tap([(179, 2160), (179, 2160)], 1) 36 except: 37 pass 38 print(e) 39 def aliypay(): 40 global runtime 41 global append 42 global check 43 global appdriver 44 while 1 : 45 try: 46 if runtime == 150: 47 break 48 runtime +=1 49 if appdriver.find_element_by_id('cn.igxe:id/confirm_payment_actual_price_tv').text==buyprice: 50 appdriver.tap([(949, 1104), (949, 1104)], 100) 51 appdriver.tap([(949, 1104), (949, 1104)], 100) 52 appdriver.tap([(567, 2200), (567, 2200)], 100) 53 appdriver.tap([(567, 2200), (567, 2200)], 100) 54 break 55 else: 56 itchat.send_msg("物品价格与加入购物车时不符",toUserName=itcaht_user_name) 57 append = datetime.now() 58 runtime = 150 59 appdriver.back() 60 appdriver.back() 61 appdriver.back() 62 return 63 except Exception as e: 64 print(e) 65 check = 0 66 time.sleep(2) 67 #appdriver.implicitly_wait(0.2) 68 while 1: 69 try: 70 if runtime == 150: 71 break 72 runtime+=1 73 appdriver.tap([(179, 2160), (179, 2160)], 1) 74 t = threading.Thread(target=checktimeout) 75 t.setDaemon(True) 76 t.start() 77 t.join(timeout=0.5) 78 if check==0: 79 adb2 = "adb shell input tap 179 2160" 80 os.system(adb2) 81 continue 82 appdriver.tap([(875, 2060), (875, 2060)], 1) 83 appdriver.tap([(574, 2060), (574, 2060)], 1) 84 appdriver.tap([(875, 2060), (875, 2060)], 1) 85 appdriver.tap([(574, 2060), (574, 2060)], 1) 86 appdriver.tap([(875, 2060), (875, 2060)], 1) 87 appdriver.tap([(574, 2060), (574, 2060)], 1) 88 break 89 except Exception as e: 90 print(e) 91 try: 92 appdriver.tap([(179, 2160), (179, 2160)], 1) 93 except: 94 pass 95 def wechatpay(): 96 global runtime 97 global append 98 while 1 : 99 try: 100 if runtime == 150: 101 break 102 runtime +=1 103 appdriver.find_element_by_name('微信支付').click() 104 appdriver.tap([(950, 1800), (950, 1800)], 100) 105 appdriver.tap([(950, 1800), (950, 1800)], 100) 106 break 107 except: 108 pass 109 while 1 : 110 try: 111 if runtime == 150: 112 break 113 runtime +=1 114 if appdriver.find_element_by_id("com.tencent.mm:id/fdj").text==buyprice: 115 appdriver.tap([(546, 725), (546, 725)], 100) 116 appdriver.tap([(546, 725), (546, 725)], 100) 117 time.sleep(0.3) 118 appdriver.tap([(950, 1700), (950, 1700)], 1) 119 appdriver.tap([(550, 1700), (550, 1700)], 1) 120 appdriver.tap([(950, 1700), (950, 1700)], 1) 121 appdriver.tap([(550, 1700), (550, 1700)], 1) 122 appdriver.tap([(950, 1700), (950, 1700)], 1) 123 appdriver.tap([(550, 1700), (550, 1700)], 1) 124 append = datetime.now() 125 else: 126 append = datetime.now() 127 itchat.send_msg("商品价格与一开始不符",toUserName=itcaht_user_name) 128 findmainweb() 129 break 130 except: 131 pass 132 while 1: 133 try: 134 if runtime == 150: 135 break 136 runtime +=1 137 appdriver.find_element_by_name('返回商家').click() 138 break 139 except: 140 pass 141 def calc_count(): 142 strday = "RUNLOG-" + time.strftime('%Y-%m-%d', time.localtime(time.time())) + ".txt" 143 with open(strday, "r", encoding='utf-8') as log: 144 temp = log.readlines() 145 pattern = re.compile('([0-9]*?)') 146 result1 = pattern.findall(str(temp)) 147 #print(result1) 148 i = len(result1) 149 if i>0: 150 res = result1[i-1].replace("(","").replace(")","") 151 res = int(res) 152 print(res) 153 return res 154 else: 155 return 0 156 def judgetime(): 157 global itemcount 158 strtime = time.strftime('%H:%M:%S', time.localtime(time.time())) 159 pattern = re.compile('00:00:') 160 result1 = pattern.findall(str(strtime)) 161 if len(result1)==1: 162 time.sleep(60) 163 itemcount = 0 164 def findmainweb(): 165 global appdriver 166 try: 167 appdriver.find_element_by_id("cn.igxe:id/personalImageView") 168 return 169 except: 170 pass 171 time = 0 172 while 1: 173 try: 174 time +=1 175 if time == 100: 176 try: 177 appdriver.quit() 178 time.sleep(2) 179 except: 180 pass 181 appdriver = appwebdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 启动APP 182 time.sleep(7) 183 appdriver.back() 184 try: 185 appdriver.find_element_by_id('com.alipay.android.app:id/flybird_dialog_double_right_btn').click() #啥玩意 186 except: 187 pass 188 appdriver.find_element_by_id("cn.igxe:id/personalImageView") 189 break 190 except: 191 pass 192 def updatealiypay(): 193 global appdriver 194 trytime = 0 195 findmainweb() 196 try: 197 appdriver.find_element_by_name("跳过此版本").click() 198 except: 199 pass 200 while 1: 201 try: 202 if trytime == 100: 203 break 204 trytime +=1 205 appdriver.find_element_by_id('cn.igxe:id/mallTextView') 206 appdriver.tap([(136, 2150), (136, 2150)], 1) 207 appdriver.tap([(136, 2150), (136, 2150)], 1) 208 break 209 except Exception as e: 210 pass 211 while 1: 212 try: 213 if trytime == 100: 214 break 215 trytime += 1 216 appdriver.find_element_by_xpath('//*[@resource-id="cn.igxe:id/goods_list_recycler"]/android.view.ViewGroup[1]').click() 217 break 218 except Exception as e: 219 pass 220 while 1: 221 try: 222 if trytime == 100: 223 break 224 trytime += 1 225 appdriver.find_element_by_xpath('//*[@resource-id="cn.igxe:id/sale_recyclerView"]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.TextView[3]').click() 226 break 227 except Exception as e: 228 pass 229 while 1: 230 try: 231 if trytime == 100: 232 break 233 trytime += 1 234 appdriver.find_element_by_name("支付宝支付").click() 235 break 236 except: 237 pass 238 try: 239 appdriver.find_element_by_id("cn.igxe:id/confirm_payment_commit_btn").click() 240 except: 241 pass 242 if trytime == 100: 243 try: 244 appdriver.quit() 245 time.sleep(2) 246 appdriver = appwebdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 启动APP 247 except: 248 pass 249 time.sleep(5) 250 appdriver.back() 251 appdriver.back() 252 appdriver.back() 253 findmainweb() 254 cleancart() 255 def cleancart(): 256 appdriver.tap([(971, 2150), (971, 2150)], 1) 257 appdriver.tap([(971, 2150), (971, 2150)], 1) 258 appdriver.tap([(779, 2150), (779, 2150)], 1) 259 appdriver.tap([(779, 2150), (779, 2150)], 1) 260 runtime = 0 261 while 1: 262 try: 263 if runtime == 50: 264 break 265 runtime += 1 266 appdriver.find_element_by_name('管理').click() # 待改 267 break 268 except: 269 pass 270 while 1: 271 try: 272 if runtime == 50: 273 break 274 runtime += 1 275 appdriver.find_element_by_name('全选').click() # 待改 276 break 277 except: 278 pass 279 while 1: 280 try: 281 if runtime == 50: 282 break 283 runtime += 1 284 appdriver.find_element_by_id("cn.igxe:id/item_shopping_cart_commit_tv").click() 285 break 286 except: 287 pass 288 def get_screen_and_send_web(pre): 289 screenshot = time.ctime().replace(":", "-") 290 driver.get_screenshot_as_file("C:\Users\86131\Desktop\bugscreen\" + pre+screenshot + ".png") 291 itchat.send_image(u"C:\Users\86131\Desktop\bugscreen/" + pre + screenshot + ".png", 292 toUserName=itcaht_user_name) 293 def log(printsrt): 294 strtime = time.strftime('%H:%M:%S', time.localtime(time.time())) 295 strday = "RUNLOG-"+time.strftime('%Y-%m-%d', time.localtime(time.time()))+".txt" 296 print(strtime + " " + str(printsrt)) 297 with open (strday,"a",encoding='utf-8') as log: 298 log.write(strtime+" "+str(printsrt)+" ") 299 def timeprint(printsrt): 300 strtime = time.strftime('%H:%M:%S', time.localtime(time.time())) 301 print(strtime + " " + str(printsrt)) 302 def after_logout(): 303 log("退出后调用") 304 sendmsg_2() 305 def checkbuy_info(): 306 global appdriver 307 global buyprice 308 runtime_1 = 0 309 try: 310 if appdriver.find_element_by_xpath('//*[@resource-id="cn.igxe:id/recyclerView"]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.TextView[3]').text=="待买家发起报价": 311 appdriver.tap([(562, 695), (562, 695)], 1) 312 time.sleep(2) 313 float1 = float(appdriver.find_element_by_xpath('//*[@resource-id="cn.igxe:id/unit_price_tv"]').text) 314 if float1==float(buyprice): 315 try: 316 itchat.send_msg("价格正确,正在发送报价", toUserName=itcaht_user_name) 317 except: 318 pass 319 else: 320 try: 321 itchat.send_msg("价格不匹配,终止交易",toUserName=itcaht_user_name) 322 except: 323 pass 324 return 325 while 1: 326 try: 327 if runtime_1 == 50: 328 itchat.send_msg("发送报价失败",toUserName=itcaht_user_name) 329 break 330 runtime_1 += 1 331 appdriver.find_element_by_name('发送报价').click() 332 time.sleep(2) 333 appdriver.find_element_by_name('我已开启').click() 334 break 335 except: 336 pass 337 time.sleep(6) 338 appdriver.back() 339 time.sleep(1) 340 appdriver.back() 341 time.sleep(1) 342 get_screen_and_send("BUYINFO-") 343 if appdriver.find_element_by_xpath('//*[@resource-id="cn.igxe:id/recyclerView"]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.TextView[3]').text == "待买家发起报价": 344 itchat.send_msg("发送报价失败",toUserName=itcaht_user_name) 345 else: 346 itchat.send_msg("发送报价成功",toUserName=itcaht_user_name) 347 except: 348 itchat.send_msg("出现未知错误", toUserName=itcaht_user_name) 349 get_screen_and_send("ERROR-") 350 try: 351 appdriver.quit() 352 except: 353 pass 354 time.sleep(1) 355 appdriver = appwebdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 启动APP 356 time.sleep(8) 357 def app_autobuy(): 358 global buyprice 359 global appdriver 360 global buyinfo 361 global endtime 362 global nowtime 363 global runtime 364 global append 365 runtime = 0 366 appnow = datetime.now() 367 appdriver.tap([(958, 2200), (958, 2200)], 100) 368 appdriver.tap([(958, 2200), (958, 2200)], 100) 369 appdriver.tap([(751, 2200), (751, 2200)], 100) 370 appdriver.tap([(751, 2200), (751, 2200)], 100) 371 time.sleep(0.7) 372 appdriver.tap([(125, 2039), (125, 2039)], 100) 373 appdriver.tap([(936, 2050), (936, 2050)], 100) 374 appdriver.tap([(936, 2050), (936, 2050)], 100) 375 aliypay() 376 append = datetime.now() 377 log("购买耗时: " + str(append - appnow+endtime-nowtime) + ' ' + "runtime = " + str(runtime)) 378 itchat.send_msg("火狐耗时:"+str(endtime-nowtime)+" "+"APP耗时:"+str(append - appnow)+" "+"购买总耗时: " + str(append - appnow+endtime-nowtime) + ' ' + "JS执行次数 = " + str(runtime)+"/150", toUserName=itcaht_user_name) 379 get_screen_and_send("PAY-") 380 time.sleep(2) 381 try: 382 appdriver.find_element_by_name('跳过').click() 383 except: 384 pass 385 try: 386 appdriver.find_element_by_name('我知道了').click() 387 except: 388 pass 389 try: 390 appdriver.find_element_by_name('完成').click() 391 except: 392 pass 393 394 while 1: 395 try: 396 if runtime == 150: 397 get_screen_and_send("BUG-") 398 appdriver.back() 399 appdriver.back() 400 appdriver.back() 401 appdriver.quit() 402 time.sleep(2) 403 appdriver = appwebdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 启动APP 404 break 405 runtime +=1 406 break 407 except: 408 pass 409 time.sleep(8) 410 findmainweb() 411 try: 412 appdriver.find_element_by_name('跳过此版本').click() 413 except: 414 pass 415 temperror = 0 416 while 1: 417 try: 418 if temperror ==50: 419 get_screen_and_send("BUG-") 420 appdriver.back() 421 appdriver.back() 422 appdriver.back() 423 appdriver.quit() 424 time.sleep(2) 425 appdriver = appwebdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 启动APP 426 time.sleep(5) 427 appdriver.tap([(958, 2056), (958, 2056)], 100) 428 time.sleep(1) 429 appdriver.find_element_by_xpath('//*[@resource-id="cn.igxe:id/personalLayout"]').click() 430 break 431 temperror+=1 432 appdriver.tap([(971, 2150), (971, 2150)], 1) 433 appdriver.tap([(971, 2150), (971, 2150)], 1) 434 time.sleep(2) 435 appdriver.tap([(182, 1091), (182, 1091)], 1) 436 appdriver.tap([(182, 1091), (182, 1091)], 1) 437 break 438 except: 439 pass 440 time.sleep(3) 441 get_screen_and_send("ORDERSTATUS-") 442 checkbuy_info() 443 appdriver.back() 444 if runtime == 150: 445 itchat.send_msg("出现错误,正在尝试删除购物车货物", toUserName=itcaht_user_name) 446 time.sleep(2) 447 runtime = 0 448 findmainweb() 449 appdriver.tap([(971, 2150), (971, 2150)], 1) 450 appdriver.tap([(971, 2150), (971, 2150)], 1) 451 appdriver.tap([(779, 2150), (779, 2150)], 1) 452 appdriver.tap([(779, 2150), (779, 2150)], 1) 453 while 1: 454 try: 455 if runtime == 50: 456 break 457 runtime += 1 458 appdriver.find_element_by_name('管理').click() #待改 459 break 460 except: 461 pass 462 get_screen_and_send("PRICE-") 463 while 1: 464 try: 465 if runtime == 50: 466 break 467 runtime += 1 468 appdriver.find_element_by_name('全选').click() #待改 469 break 470 except: 471 pass 472 while 1: 473 try: 474 if runtime == 50: 475 break 476 runtime += 1 477 appdriver.find_element_by_id("cn.igxe:id/item_shopping_cart_commit_tv").click() 478 break 479 except: 480 pass 481 judgedel = 0 482 try: 483 appdriver.find_element_by_name('管理') #待改 484 judgedel = 1 485 except: 486 pass 487 if (judgedel == 0): 488 log("删除成功") 489 itchat.send_msg("购物车货物删除成功",toUserName=itcaht_user_name) 490 get_screen_and_send("PURCHASE-") 491 else: 492 log("仍然活着") 493 itchat.send_msg("购物车货物删除失败", toUserName=itcaht_user_name) 494 get_screen_and_send("PURCHASE-") 495 buyinfo = 0 496 def get_screen_and_send(pre): 497 try: 498 screenshot = time.ctime().replace(":", "-") 499 appdriver.get_screenshot_as_file( 500 u"C:\Users\86131\Desktop\bugscreen\" + pre+screenshot + ".png") 501 itchat.send_image(u"C:\Users\86131\Desktop\bugscreen/" +pre+ screenshot + ".png", 502 toUserName=itcaht_user_name) 503 except: 504 sendmsg_2() 505 def judge_app_online_login_and_app_front(): 506 global appdriver 507 global appcookies 508 judgelogin = 0 509 try: 510 appdriver.find_element_by_xpath('//*[@resource-id="cn.igxe:id/shoppingCartLayout"]').click() 511 except: 512 #itchat.send_msg("IGXEAPP不在前台 , 正在尝试重启",toUserName=itcaht_user_name) 513 try: 514 appdriver.quit() 515 except: 516 pass 517 time.sleep(1) 518 appdriver = appwebdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 启动APP 519 time.sleep(5) 520 #get_screen_and_send("STATE-") 521 time.sleep(2) 522 try: 523 if appdriver.find_element_by_id("cn.igxe:id/sign_in_button").text == "登录": 524 judgelogin = 1 525 itchat.send_msg("igxe未登录,正在尝试登录", toUserName=itcaht_user_name) 526 appdriver.find_element_by_id("cn.igxe:id/account").clear() 527 appdriver.find_element_by_id("cn.igxe:id/account").send_keys("******") 528 appdriver.find_element_by_id("cn.igxe:id/password").send_keys("xxxxxxxxxxx") 529 appdriver.hide_keyboard() 530 time.sleep(0.5) 531 appdriver.find_element_by_id("cn.igxe:id/sign_in_button").click() 532 except: 533 log("igxe已登录") 534 time.sleep(1) 535 try: 536 appdriver.find_element_by_xpath('//*[@resource-id="cn.igxe:id/personalLayout"]').click() 537 except: 538 pass 539 time.sleep(1) 540 try: 541 if judgelogin == 1: 542 if appdriver.find_element_by_id("cn.igxe:id/userName").text=="MB秒发123": 543 itchat.send_msg("登陆成功", toUserName=itcaht_user_name) 544 else: 545 itchat.send_msg("登陆失败",toUserName=itcaht_user_name) 546 get_screen_and_send("LOGIN-") 547 except: 548 pass 549 def keep_app_open(): 550 global appdriver 551 try: 552 appdriver.tap([(-1, -1), (-1, -1)], 0) 553 except Exception as e: 554 pass 555 def logintoigxe(): 556 keep_app_open() 557 global driver 558 driver.set_page_load_timeout(3) 559 try: 560 driver.get('https://www.igxe.cn/product/730/555335') 561 except: 562 pass 563 time.sleep(2) 564 try: 565 buy1 = driver.find_element_by_xpath( 566 '/html/body/div[3]/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[7]/a[1]') 567 except: 568 pass 569 try: 570 buy2 = driver.find_element_by_xpath( 571 '/html/body/div[3]/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[7]/a[2]') 572 except: 573 pass 574 try: 575 buy3 = driver.find_element_by_xpath( 576 '/html/body/div[3]/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[7]/a') 577 except: 578 pass 579 try: 580 if buy1.text == '加入购物车': 581 buy = buy1 582 except: 583 pass 584 try: 585 if buy2.text == '加入购物车': 586 buy = buy2 587 except: 588 pass 589 try: 590 if buy3.text == '加入购物车': 591 buy = buy3 592 except: 593 pass 594 ActionChains(driver).click(buy).perform() 595 time.sleep(3) 596 click = driver.find_element_by_xpath('/html/body/div[4]/div[1]/div/div[1]/form/ul/li[2]') 597 ActionChains(driver).click(click).perform() 598 time.sleep(1) 599 key = driver.find_element_by_xpath('//*[@id="password"]') 600 key.send_keys('xxxxxxxxxxx') 601 username = driver.find_element_by_xpath('//*[@id="username"]') 602 username.send_keys('******321') 603 click = driver.find_element_by_xpath('//*[@id="login-btn"]') 604 ActionChains(driver).click(click).perform() 605 while 1: 606 try: 607 tses = driver.find_element_by_xpath( 608 '/html/body/div[3]/div[1]/div[1]/div/div/div[2]/ul/li[7]/a[2]') 609 if(tses.text=='MB秒发123'): 610 break 611 except: 612 pass 613 keep_app_open() 614 def sendmsg(zhenshi,strtime,output,chajia,earnrate,jinglirun): 615 host = 'smtp.163.com' 616 sender = '******321@163.com' 617 pwd = 'qq******123' 618 receiver = '652235835@qq.com' 619 body = zhenshi+strtime+' '+'价格:' + output+' ' + 'buff差价:' + "%.2f" % float(chajia)+' ' + '利率:' + "%.2f" % float(earnrate) + '%'+' '+'净利润:'+"%.2f" % float(jinglirun) + ' ' 620 msg = MIMEText(body) 621 msg['subject'] = '价格:' + output+' ' '净利润:'+"%.2f" % float(jinglirun) + ' ' + zhenshi 622 msg['from'] = sender 623 msg['to'] = receiver 624 s = smtplib.SMTP_SSL(host) 625 s.login(sender, pwd) 626 s.sendmail(sender, receiver, msg.as_string()) 627 def sendmsg_2(): 628 host = 'smtp.163.com' 629 sender = '******321@163.com' 630 pwd = 'qq******123' 631 receiver = '******@qq.com' 632 body = "wdnmd" 633 msg = MIMEText(body) 634 msg['subject'] = "掉线了都" 635 msg['from'] = sender 636 msg['to'] = receiver 637 s = smtplib.SMTP_SSL(host) 638 s.login(sender, pwd) 639 s.sendmail(sender, receiver, msg.as_string()) 640 def getcookies(): 641 keep_app_open() 642 global cookies 643 log('get new cookie') 644 getcookiesdriver = webdriver.Firefox() 645 getcookiesdriver.maximize_window() 646 getcookiesdriver.set_page_load_timeout(3) 647 time.sleep(1) 648 try: 649 getcookiesdriver.get('https://www.igxe.cn/product/730/555335') 650 except: 651 pass 652 time.sleep(2) 653 try: 654 buy1 = getcookiesdriver.find_element_by_xpath( 655 '/html/body/div[3]/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[7]/a[1]') 656 except: 657 pass 658 try: 659 buy2 = getcookiesdriver.find_element_by_xpath( 660 '/html/body/div[3]/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[7]/a[2]') 661 except: 662 pass 663 try: 664 buy3 = getcookiesdriver.find_element_by_xpath( 665 '/html/body/div[3]/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[7]/a') 666 except: 667 pass 668 669 try: 670 if buy1.text == '加入购物车': 671 buy = buy1 672 except: 673 pass 674 try: 675 if buy2.text == '加入购物车': 676 buy = buy2 677 except: 678 pass 679 try: 680 if buy3.text == '加入购物车': 681 buy = buy3 682 except: 683 pass 684 ActionChains(getcookiesdriver).click(buy).perform() 685 time.sleep(3) 686 click = getcookiesdriver.find_element_by_xpath('/html/body/div[4]/div[1]/div/div[1]/form/ul/li[2]') 687 ActionChains(getcookiesdriver).click(click).perform() 688 time.sleep(1) 689 key = getcookiesdriver.find_element_by_xpath('//*[@id="password"]') 690 key.send_keys('xxxxxxxxxxx') 691 username = getcookiesdriver.find_element_by_xpath('//*[@id="username"]') 692 username.send_keys('18580890781') 693 click = getcookiesdriver.find_element_by_xpath('//*[@id="login-btn"]') 694 ActionChains(getcookiesdriver).click(click).perform() 695 while 1: 696 try: 697 tses = getcookiesdriver.find_element_by_xpath( 698 '/html/body/div[3]/div[1]/div[1]/div/div/div[2]/ul/li[7]/a[2]') 699 if(tses.text=='Igxe85185222'): 700 break 701 except Exception as e: 702 pass 703 cookies = getcookiesdriver.get_cookies() 704 time.sleep(1) 705 getcookiesdriver.quit() 706 keep_app_open() 707 def judgecookie(): 708 keep_app_open() 709 global cookies1 710 headers = { 711 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/71.0.3578.98 Safari/537.36', 712 } 713 url = 'https://www.igxe.cn/product/730/555335' 714 for cookie in cookies: 715 cookies1[cookie['name']] = cookie['value'] 716 point = requests.get(url, cookies=cookies1, headers=headers,timeout = 10) 717 pattern = re.compile('.*?85185222.*?') 718 result1 = pattern.findall(point.text) 719 if result1!=[]: 720 log("spider with cookie online") 721 else: 722 log("spider offline,try to get new cookie") 723 getcookies() 724 keep_app_open() 725 def getbuyurl(tradeurl,hisurl,itemname): 726 try: 727 keep_app_open() 728 global itemsdict 729 global bufflowprice 730 global k 731 global first_url_count 732 global getcount 733 global count 734 global nofound 735 point = requests.get(hisurl,headers=header,timeout = 5,cookies=cookies1) 736 turn = point.content.decode(encoding='gbk',errors='ignore') 737 res = json.loads(turn) 738 content_list = [] 739 for i in res['data']['items']: 740 content = {} 741 content['价格']=i['price'] 742 content_list.append(float(content['价格'])) 743 content_list.sort() 744 if len(content_list) >= 2: 745 pingjun = content_list[0] + content_list[1] + content_list[2] 746 pingjun = pingjun/3 747 hisprice = content_list[1] 748 if len(content_list) == 1: 749 hisprice = content_list[0] 750 if len(content_list) == 0: 751 hisprice = 0 752 point = requests.get(tradeurl, headers=header,timeout = 5,cookies=cookies1) 753 turn = point.content.decode(encoding='gbk', errors='ignore') 754 res = json.loads(turn) 755 sum=1 756 global url 757 url = tradeurl 758 url = url.replace('https://buff.163.com/api/market/goods/sell_order?game=csgo&goods_id=', '') 759 url = url.replace('&page_num=1&sort_by=default&mode=&allow_tradable_cooldown=1', '') 760 url = url.replace(' ', '') 761 url = 'https://buff.163.com/market/goods?goods_id=' + url + '&from=market#tab=selling' + ' ' 762 for i in res['data']['items']: 763 content = {} 764 content['价格']=i['price'] 765 if sum == 1: 766 userid = i['user_id'] 767 price1 = float(content['价格']) 768 itemsdict[itemname] = price1 769 itemsdict['price'+itemname]=pingjun 770 if sum == 2: 771 price2 = float(content['价格']) 772 chajia = price2 - price1 773 earnrate = chajia / itemsdict['price'+itemname] 774 earnrate *= 100 775 sum+=1 776 if sum == 3: 777 if hisprice > 0: 778 if earnrate > 7: 779 if price1*1.03<pingjun: 780 if price1*1.05<price2: 781 getcount +=1 782 with open('buyforself.txt','a',encoding='utf-8') as z: 783 log(url.replace(' ','')) 784 log('价格:'+ str(price1)+' 差价:'+str(chajia)+' 利率:'+str(earnrate)+'%') 785 #itchat.send_msg(itemname,toUserName=itcaht_user_name_sam) 786 #itchat.send_msg(url.replace(' ',''), toUserName=itcaht_user_name_sam) 787 #itchat.send_msg('价格:'+ str(price1)+' 差价:'+str(chajia)+' 利率:'+str(earnrate)+'%',toUserName=itcaht_user_name_sam) 788 z.write(url) 789 z.write('价格:'+ str(price1)+' 差价:'+str(chajia)+' 利率:'+str(earnrate)+'%'+' ') 790 except Exception as e: 791 pass 792 buffcount=0 793 def getbuyurl_hc(tradeurl,hisurl,itemname): 794 while 1: 795 try: 796 global buffcount 797 global itemsdict 798 global bufflowprice 799 global k 800 global first_url_count 801 global getcount 802 global count 803 global nofound 804 global buff_judge_exist 805 keep_app_open() 806 if (tradeurl in buff_judge_exist.keys()): 807 break 808 point = requests.get(hisurl,headers=header,timeout = 5,cookies=cookies1) 809 turn = point.content.decode(encoding='gbk',errors='ignore') 810 res = json.loads(turn) 811 content_list = [] 812 for i in res['data']['items']: 813 content = {} 814 content['价格']=i['price'] 815 content_list.append(float(content['价格'])) 816 content_list.sort() 817 if len(content_list) >= 2: 818 pingjun = content_list[0] + content_list[1] + content_list[2] 819 pingjun = pingjun/3 820 hisprice = content_list[1] 821 if len(content_list) == 1: 822 hisprice = content_list[0] 823 if len(content_list) == 0: 824 hisprice = 0 825 point = requests.get(tradeurl, headers=header,timeout = 5,cookies=cookies1) 826 turn = point.content.decode(encoding='gbk', errors='ignore') 827 res = json.loads(turn) 828 sum=1 829 global url 830 url = tradeurl 831 url = url.replace('https://buff.163.com/api/market/goods/sell_order?game=csgo&goods_id=', '') 832 url = url.replace('&page_num=1&sort_by=default&mode=&allow_tradable_cooldown=1', '') 833 url = url.replace(' ', '') 834 url = 'https://buff.163.com/market/goods?goods_id=' + url + '&from=market#tab=selling' + ' ' 835 for i in res['data']['items']: 836 content = {} 837 content['价格']=i['price'] 838 if sum == 1: 839 userid = i['user_id'] 840 price1 = float(content['价格']) 841 itemsdict[itemname] = price1 842 itemsdict['price'+itemname]=pingjun 843 if sum == 2: 844 price2 = float(content['价格']) 845 chajia = price2 - price1 846 earnrate = chajia / itemsdict['price'+itemname] 847 earnrate *= 100 848 sum+=1 849 if sum == 3: 850 if hisprice > 0: 851 if earnrate > 7: 852 if price1*1.03<pingjun: 853 if price1*1.05<price2: 854 getcount +=1 855 with open('buyforself.txt','a',encoding='utf-8') as z: 856 log(url.replace(' ','')) 857 log('价格:'+ str(price1)+' 差价:'+str(chajia)+' 利率:'+str(earnrate)+'%') 858 #itchat.send_msg(itemname,toUserName=itcaht_user_name_sam) 859 #itchat.send_msg(url.replace(' ',''), toUserName=itcaht_user_name_sam) 860 #itchat.send_msg('价格:'+ str(price1)+' 差价:'+str(chajia)+' 利率:'+str(earnrate)+'%',toUserName=itcaht_user_name_sam) 861 z.write(url) 862 z.write('价格:'+ str(price1)+' 差价:'+str(chajia)+' 利率:'+str(earnrate)+'%'+' ') 863 buff_judge_exist[tradeurl]=1 864 buffcount +=1 865 print(" "+str(buffcount)+'/840',end='') 866 break 867 except Exception as e: 868 pass 869 def igxegetdict(fpoint): 870 try: 871 state = { 872 "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/39.0.2171.71 Safari/537.36"} 873 sellhistoryurl = fpoint.readline() 874 tradeurl = fpoint.readline() 875 point = requests.get(sellhistoryurl, headers=state, timeout=5,cookies=cookies1) 876 turn = point.content.decode(encoding='gbk', errors='ignore') 877 js = json.loads(turn) 878 temp = js['data'] 879 content_list = [] 880 for i in temp: 881 content = {} 882 content['价格'] = i['unit_price'] 883 itemname = i['name'] 884 content_list.append(float(content['价格'])) 885 content_list.sort() 886 zhenshi = itemname.replace(' ', '') + ' ' 887 if len(content_list) >= 2: 888 hisprice = content_list[1] 889 pingjun = content_list[0] + content_list[1] + content_list[2] 890 pingjun = pingjun / 3 891 itemsdict['pingjun' + zhenshi] = pingjun 892 itemsdict['hisprice' + zhenshi] = hisprice 893 # log('pingjun'+zhenshi+"已录入, 值为"+str(itemsdict['pingjun'+zhenshi])) 894 # log('hisprice'+zhenshi+"已录入, 值为"+str(itemsdict['hisprice'+zhenshi])) 895 if len(content_list) == 1: 896 hisprice = content_list[0] 897 itemsdict['pingjun' + zhenshi] = 0 898 itemsdict['hisprice' + zhenshi] = hisprice 899 if len(content_list) == 0: 900 hisprice = 0 901 itemsdict['pingjun' + zhenshi] = 0 902 itemsdict['hisprice' + zhenshi] = hisprice 903 first_url_count += 1 904 except : 905 pass 906 def igxegetbuyurl(tradeurl): 907 try: 908 global itemsdict 909 global getcount 910 global first_url_count 911 global count 912 global nofound 913 global driver 914 global buyprice 915 global fbuyprice 916 global buyinfo 917 global driver 918 global nowtime 919 global endtime 920 global nowprice 921 global itemcount 922 if buyinfo ==0: 923 nowtime = datetime.now() 924 try: 925 driver.get(tradeurl.replace("/trade", "")) 926 except: 927 pass 928 itemcount +=1 929 strtime = time.strftime('%H:%M:%S', time.localtime(time.time())) 930 headers = { 931 "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/39.0.2171.71 Safari/537.36"} 932 ret = requests.get(tradeurl, headers=headers,timeout = 3,cookies=cookies1) 933 r = ret.content.decode(encoding='gbk',errors='ignore') 934 res = json.loads(r) 935 content_list = [] 936 sum=1 937 price1=0.0 938 price2=0.0 939 for i in res['d_list']: 940 content = {} 941 content['价格'] = i['unit_price'] 942 content['名字'] = i['name'] 943 content['steamuid']=i['steam_uid'] 944 content_list.append(content) 945 if sum == 1: 946 itemname = i['name'] 947 steamuid = i['steam_uid'] 948 price1 = float(content['价格']) 949 if sum == 2: 950 price2 = float(content['价格']) 951 sum+=1 952 if sum == 3: 953 zhenshi = itemname.replace(' ','')+' ' 954 if not (zhenshi in itemsdict.keys()): 955 log(itemname+"-------------查无字典") 956 break 957 chajia = itemsdict[zhenshi] - price1 958 log("("+str(itemcount)+") "+itemname + " " + "buff价格:" + str(itemsdict[zhenshi]) + " igxe价格:" + str(price1)+" 差价:"+str(chajia)) 959 jinglirun = chajia - (itemsdict[zhenshi]*0.035) 960 earnrate = chajia / itemsdict[zhenshi] 961 earnrate *= 100 962 if itemsdict['hisprice' + zhenshi] > 0: 963 if price1*1.03<itemsdict['pingjun' + zhenshi]: 964 if price1 * 1.03 < price2: 965 if price1 * 1.03 < itemsdict['price' + zhenshi]: 966 if earnrate > 3: 967 #itchat.send_msg(tradeurl.replace("/trade", "")+'价格:' + str(price1) + ' buff差价:' + str(chajia) + ' 利率:' + str(earnrate) + '%'+' 净利润:'+str(jinglirun),toUserName=itcaht_user_name_sam) 968 #itchat.send_msg(zhenshi,toUserName=itcaht_user_name_sam) 969 getcount += 1 970 log(tradeurl.replace("/trade", "")+'价格:' + str(price1) + ' buff差价:' + str(chajia) + ' 利率:' + str(earnrate) + '%'+' 净利润:'+str(jinglirun)) 971 if earnrate >= defearnrate and buyinfo ==1: 972 itchat.send_msg("已经有一个自动购买在运行",toUserName=itcaht_user_name) 973 if earnrate >= defearnrate and buyinfo ==0: 974 buyinfo = 1 975 log("get real msg!") 976 output = "%.2f" % float(price1) 977 itchat.send_msg(zhenshi+strtime+' '+'价格:' + str(output)+' ' + 'buff差价:' + str(chajia)+' ' + '利率:' + str(earnrate) + '%'+' '+'净利润:'+str(jinglirun) + ' ', toUserName=itcaht_user_name) 978 itchat.send_msg("卖家Steam库存:"+' '+"https://steamcommunity.com/profiles/"+steamuid+"/inventory/#730", toUserName=itcaht_user_name) 979 if price1<3500 and earnrate > 8.5 : 980 itchat.send_msg("物品符合条件,即将自动购买", toUserName=itcaht_user_name) 981 else: 982 itchat.send_msg("物品不符合自动购买条件,请手动登陆进行购买", toUserName=itcaht_user_name) 983 errortime = 0 984 while 1: 985 try: 986 errortime += 1 987 if errortime==1000: 988 itchat.send_msg("火狐购买页面未能加载",toUserName=itcaht_user_name) 989 buyinfo = 0 990 get_screen_and_send_web("WEB-") 991 break 992 getpriceelement = driver.find_element_by_xpath( 993 '/html/body/div[3]/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[6]/span') 994 strprice = "%.2f" % float(price1) 995 eleprice = str(getpriceelement.text) 996 eleprice = eleprice.replace("¥", '') 997 if eleprice == strprice: 998 buy = 0 999 try: 1000 buy1 = driver.find_element_by_xpath( 1001 '/html/body/div[3]/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[7]/a[1]') 1002 except: 1003 pass 1004 try: 1005 buy2 = driver.find_element_by_xpath( 1006 '/html/body/div[3]/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[7]/a[2]') 1007 except: 1008 pass 1009 try: 1010 buy3 = driver.find_element_by_xpath( 1011 '/html/body/div[3]/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[1]/div[1]/table/tbody/tr[1]/td[7]/a') 1012 except: 1013 pass 1014 try: 1015 if buy1.text == '加入购物车': 1016 buy = buy1 1017 except: 1018 pass 1019 try: 1020 if buy2.text == '加入购物车': 1021 buy = buy2 1022 except: 1023 pass 1024 try: 1025 if buy3.text == '加入购物车': 1026 buy = buy3 1027 except: 1028 pass 1029 try: 1030 if buy.text != "加入购物车": 1031 itchat.send_msg("加入购物车失败",toUserName=itcaht_user_name) 1032 except: 1033 itchat.send_msg("加入购物车失败", toUserName=itcaht_user_name) 1034 ActionChains(driver).click(buy).perform() 1035 time.sleep(0.5) 1036 fbuyprice = price1 1037 buyprice = "%.2f" % float(fbuyprice) 1038 endtime = datetime.now() 1039 app_autobuy() 1040 else: 1041 log("找不到啦") 1042 buyinfo = 0 1043 time.sleep(2) 1044 break 1045 except Exception as e: 1046 log(e) 1047 break 1048 first_url_count += 1 1049 except Exception as e: 1050 pass 1051 def after_logout(): 1052 log("退出后调用") 1053 sendmsg_2() 1054 def check_exsit(process_name): 1055 WMI = win32com.client.GetObject('winmgmts:') 1056 processCodeCov = WMI.ExecQuery('select * from Win32_Process where Name="%s"' % process_name) 1057 if len(processCodeCov) > 0: # 判断操作 www.iplaypy.com 1058 return 1 1059 else: 1060 return 0 1061 def main(): 1062 time.sleep(5) 1063 judge_app_online_login_and_app_front() 1064 judgecookie() 1065 logintoigxe() 1066 global itemcount 1067 global fbuyprice 1068 global buyprice 1069 global driver 1070 global nofound 1071 global getcount 1072 global first_url_count 1073 global sleep1 1074 global sleep2 1075 global count 1076 global itemsdict 1077 global appdriver 1078 global nowprice 1079 global htmlid_dict 1080 global goodsid_dict 1081 itemcount = calc_count() 1082 log('缓冲阶段:') 1083 #driver.get("https://www.bilibili.com/") 1084 #for i in range(1, 200): 1085 # driver.find_element_by_xpath('/html/body').send_keys(Keys.DOWN) 1086 #time.sleep(10) 1087 driver.set_page_load_timeout(0.5) 1088 for i in range(0,1): 1089 kk = open('buffdataurl', 'r', encoding='utf-8') 1090 with open('buyforself.txt', 'w', encoding='utf-8') as wtf: 1091 pass 1092 first_url_count = 1 1093 count = 810 1094 thread = [] 1095 for i in range(0, count): 1096 tradeurl = kk.readline() 1097 hisurl = kk.readline() 1098 itemname = kk.readline() 1099 t = threading.Thread(target=getbuyurl_hc, 1100 args=(tradeurl, hisurl, itemname,)) 1101 thread.append(t) 1102 for i in range(0, count): 1103 time.sleep(sleep1) 1104 thread[i].start() 1105 for i in range(0, count): 1106 thread[i].join() 1107 kk.close() 1108 sleep1=0.15 1109 for i in range(0, 3): 1110 sleep2 = 0 1111 count = 775 1112 thread = [] 1113 ff = open('igxedataurl', 'r') 1114 for i in range(0, count): 1115 t = threading.Thread(target=igxegetdict, 1116 args=(ff,)) 1117 thread.append(t) 1118 for i in range(0, count): 1119 time.sleep(sleep2) 1120 thread[i].start() 1121 for i in range(0, count): 1122 thread[i].join() 1123 ff.close() 1124 log('脚本开始:') 1125 while 1: 1126 try: 1127 judge_app_online_login_and_app_front() 1128 try: 1129 driver.set_page_load_timeout(10) 1130 driver.get('https://www.igxe.cn/sell/730') 1131 except Exception as e: 1132 print(e) 1133 log("火狐加载超时") 1134 if not check_exsit("firefox.exe"): 1135 driver = webdriver.Firefox() 1136 driver.set_page_load_timeout(10) 1137 driver.maximize_window() 1138 logintoigxe() 1139 driver.set_page_load_timeout(0.5) 1140 judgecookie() 1141 count = 775 1142 thread = [] 1143 ff = open('igxedataurl', 'r') 1144 for i in range(0, count): 1145 t = threading.Thread(target=igxegetdict, 1146 args=(ff,)) 1147 thread.append(t) 1148 for i in range(0, count): 1149 time.sleep(sleep2) 1150 thread[i].start() 1151 for i in range(0, count): 1152 thread[i].join() 1153 # log("000000000000000") 1154 ff.close() 1155 kk = open('buffdataurl', 'r', encoding='utf-8') 1156 with open('buyforself.txt', 'w', encoding='utf-8') as wtf: 1157 pass 1158 first_url_count = 1 1159 count = 810 1160 thread = [] 1161 for i in range(0,count): 1162 tradeurl = kk.readline() 1163 hisurl = kk.readline() 1164 itemname = kk.readline() 1165 t = threading.Thread(target=getbuyurl, 1166 args=(tradeurl,hisurl,itemname,)) 1167 thread.append(t) 1168 for i in range(0, count): 1169 time.sleep(sleep1) 1170 thread[i].start() 1171 for i in range(0, count): 1172 thread[i].join() 1173 kk.close() 1174 # log("111111111111111") 1175 goodsid_dict = {} 1176 htmlid_dict = {} 1177 igxe = open("igxedataurl", "r", encoding='utf-8') 1178 for i in range(0, 775): 1179 first = igxe.readline() 1180 second = igxe.readline() 1181 first = first.replace(" ", "") 1182 first = first.replace('https://www.igxe.cn/product/get_product_sales_history/730/', '') 1183 goodsid_dict[first] = 1 1184 times = 0 1185 igxe.close() 1186 updatealiypay() 1187 for i in range(0,35): 1188 try: 1189 driver.get('https://www.igxe.cn/product/730/3955') # 1190 except: 1191 pass 1192 appdriver.tap([(971, 2150), (971, 2150)], 1) 1193 appdriver.tap([(971, 2150), (971, 2150)], 1) 1194 appdriver.tap([(779, 2150), (779, 2150)], 1) 1195 appdriver.tap([(779, 2150), (779, 2150)], 1) 1196 findmainweb() 1197 fbuyprice = 0 1198 nofound = 0 1199 getcount = 0 1200 sleep1=0.0 1201 sleep2=0 1202 now = datetime.now() 1203 for tmp in range(0,20): 1204 try: 1205 judgetime() 1206 times += 1 1207 tradeurl = "https://www.igxe.cn/csgo/730?is_buying=0&is_stattrak%5B%5D=0&is_stattrak%5B%5D=0&sort=3&ctg_id=0&type_id=0&page_no=1&page_size=40&rarity_id=0&exterior_id=0&quality_id=0&capsule_id=0&_t=1566486610641" 1208 point = requests.get(tradeurl, headers=header, timeout=1) 1209 pattern = re.compile('"/product/730/.*?"') 1210 result1 = pattern.findall(point.text) 1211 sum = 0 1212 for i in result1: 1213 goodsid = i.replace('"/product/730/', '') 1214 goodsid = goodsid.replace('"', "") 1215 if not goodsid in htmlid_dict.keys() or htmlid_dict[goodsid] == 0: 1216 htmlid_dict[goodsid] = 1 1217 sum += 1 1218 if goodsid in goodsid_dict.keys(): 1219 url = "https://www.igxe.cn/product/trade/730/" + goodsid 1220 igxegetbuyurl(url) 1221 if times != 1 and sum == 40: 1222 htmlid_dict = {} 1223 times = 0 1224 tradeurl = "https://www.igxe.cn/csgo/730?is_buying=0&is_stattrak%5B%5D=0&is_stattrak%5B%5D=0&sort=3&ctg_id=0&type_id=0&page_no=2&page_size=40&rarity_id=0&exterior_id=0&quality_id=0&capsule_id=0&_t=1566559812876" 1225 point = requests.get(tradeurl, headers=header, timeout=1) 1226 pattern = re.compile('"/product/730/.*?"') 1227 result1 = pattern.findall(point.text) 1228 for i in reversed(result1): 1229 goodsid = i.replace('"/product/730/', '') 1230 goodsid = goodsid.replace('"', "") 1231 if goodsid in htmlid_dict.keys() and htmlid_dict[goodsid] == 1: 1232 htmlid_dict[goodsid] = 0 1233 except Exception as e: 1234 timeprint(e) 1235 end = datetime.now() 1236 except: 1237 pass 1238 nowprice = 0 1239 nowtime = 0 1240 endtime = 0 1241 fbuyprice = 0 1242 buyprice = 0 1243 nofound = 0 1244 sleep1 = 0.25 #0.05 0.25 1245 sleep2 = 0.0 #0.03 0.1 1246 defearnrate = 8.5 1247 hisprice = 0 1248 getcount = 0 1249 first_url_count = 0 1250 itemsdict = {} 1251 buff_judge_exist = {} 1252 itemcount = 0 1253 header = { 1254 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/71.0.3578.98 Safari/537.36', 1255 } 1256 cookies = 1257 cookies = 1258 [] 1259 appcookies = 1260 [] 1261 cookies1 = {} 1262 desired_caps = { 1263 'platformName': 'Android', 1264 'deviceName': 'ea50da1f', 1265 'platformVersion': '9', 1266 'appPackage': 'cn.igxe', 1267 'appActivity': 'cn.igxe.ui.MainActivity', 1268 'noReset':'true', 1269 'fullReset' : 'false', 1270 'disableAndroidWatchers':'true' 1271 } 1272 itchat.auto_login(hotReload=True,exitCallback=after_logout) 1273 send_userid='Miraculous_B' 1274 itcaht_user_name = itchat.search_friends(name=send_userid)[0]['UserName'] 1275 buyinfo = 0 1276 driver = webdriver.Firefox() 1277 driver.maximize_window() 1278 driver.set_page_load_timeout(10) 1279 os.system('taskkill /f /im "adb.exe"') 1280 appdriver = appwebdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 启动APP 1281 appdriver.quit() 1282 appdriver = appwebdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 启动APP 1283 if __name__ == '__main__': 1284 freeze_support() 1285 main()