接口登录淘宝,困难度极高,没有人已经实现过。

淘宝登录selenium 手机版  pc版。

由于每天需要使用ip代理大批量的异地登录淘宝帐号,这种情况必然会出现淘宝滑动验证码,使用ActionChains,

使用手机版m.taobao.login登录,采用短信验证码交互方式登录,获取验证码按钮的点击需要使用TouchActions,不能通过click触发。

但魔蝎科技app也没有提供淘宝在后台处理登录。

#coding=utf8
import platform,time,random,os from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.touch_actions import TouchActions
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options import config #print os.getenv('PATH') class BrowserUtil(object):
def __init__(self, is_mobile=0):
self.chrome_options = Options()
self.cookies_dict = {}
self.set_useragent(is_mobile) def __del__(self):
pass
self.driver.quit() def set_options(self,headless=1,display_pictures=0):
# self.chrome_options.binary_location = '/opt/google/chrome/chrome'
self.chrome_options.add_argument('lang=zh_CN.UTF-8')
if headless == 1:
self.chrome_options.add_argument('--headless')
self.chrome_options.add_argument('--disable-gpu')
if not display_pictures:
prefs = {"profile.managed_default_content_settings.images": 2}
self.chrome_options.add_experimental_option("prefs", prefs) def set_proxy(self):
self.chrome_options.add_argument('--proxy-server=http://' + '112.85.84.154:1131') def set_useragent(self,is_mobile):
if not is_mobile:
self.chrome_options.add_argument('user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36"') else:
self.chrome_options.add_argument('user-agent="Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Mobile Safari/537.36"')
mobileEmulation = {'deviceName': 'Nexus 6P'}
self.chrome_options.add_experimental_option('mobileEmulation', mobileEmulation) def setup_browser(self,maxsize=1):
self.driver = webdriver.Chrome(chrome_options=self.chrome_options)
if maxsize:
self.driver.maximize_window()
self.driver.set_page_load_timeout(60)
self.driver.implicitly_wait(30) def touch_element(self,element):
TouchActions(self.driver).tap(element).perform() def get_cookies_dict(self):
driver_cookie = self.driver.get_cookies()
for c_dict in driver_cookie:
self.cookies_dict[c_dict['name']] = c_dict['value'] def delete_all_cookies(self):
self.driver.delete_all_cookies() def add_cookie(self,cookie_dict):
"""
:type cookie_dict :dict
""" for k,v in cookie_dict.items():
cookie = {'name':k , 'value':v}
self.driver.add_cookie(cookie) def wait_element_by_id(self, wait_time, element_id):
WebDriverWait(self.driver, wait_time, 0.5).until(EC.presence_of_element_located((By.ID, element_id))) def click_element_by_id(self,element_id):
self.driver.find_element_by_id(element_id).click() def get(self,url):
self.driver.get(url) def save_screen(self,filename):
if platform.system() == 'Windows':
pic_path = config.screen_pic_windows
else:
pic_path = config.screen_pic_linux
if not os.path.exists(pic_path):
os.makedirs(pic_path)
filenamex = pic_path + filename
self.driver.save_screenshot(filenamex) def get_track(self,distance):
track = [ ]
current = 0
mid = distance *4 / 5
t = 0.2
v = 0
while current < distance:
if current < mid:
a = 2
else:
a = -3
v0 = v
v = v0 + a * t
move = v0 * t + 1 / 2 * a * t * t
current += move
track.append(round(move))
return track def drag_element(self,element):
tracks = self.get_track(500) action = ActionChains(self.driver)
action.move_to_element(element).perform()
action.click_and_hold(on_element=element).perform() for x in tracks:
yoffset = random.randint(-10, 10)
time_sleep = random.randint(1,2)/10.0
time_sleep = random.randint(50,100)/1000.0
time.sleep(time_sleep)
action.move_to_element_with_offset(to_element=element, xoffset=x,yoffset=yoffset).perform()
#ActionChains(self.driver).drag_and_drop_by_offset(element,500,yoffset).perform()
action.release(on_element=element).perform()

selenium chrome登陆手机 pc淘宝的更多相关文章

  1. Selenium+Chrome+PhantomJS爬取淘宝美食

    搜索关键字 利用selenium驱动浏览器搜索有关键字,得到查询后的商品列表 分析页码并翻页 得到商品码数,模拟翻页,得到后续页面的商品列表 分析提取商品内容 利用PyQuery分析源码,解析得到商品 ...

  2. Python爬虫系列-Selenium+Chrome/PhantomJS爬取淘宝美食

    1.搜索关键字 利用Selenium驱动浏览器搜索关键字,得到查询后的商品列表 2.分析页码并翻页 得到商品页码数,模拟翻页,得到后续页面的商品列表 3.分析提取商品内容 利用PyQuery分析源码, ...

  3. Selenium+Chrome+PhantomJS 爬取淘宝

    https://github.com/factsbenchmarks/taobao-jingdong 一 简单铺垫 Selenium负责驱动浏览器与python对接 PhantomJS负责渲染解析Ja ...

  4. Selenium模拟浏览器抓取淘宝美食信息

    前言: 无意中在网上发现了静觅大神(崔老师),又无意中发现自己硬盘里有静觅大神录制的视频,于是乎看了其中一个,可以说是非常牛逼了,让我这个用urllib,requests用了那么久的小白,体会到sel ...

  5. 使用selenium模拟浏览器抓取淘宝信息

    通过Selenium模拟浏览器抓取淘宝商品美食信息,并存储到MongoDB数据库中. from selenium import webdriver from selenium.common.excep ...

  6. 16-使用Selenium模拟浏览器抓取淘宝商品美食信息

    淘宝由于含有很多请求参数和加密参数,如果直接分析ajax会非常繁琐,selenium自动化测试工具可以驱动浏览器自动完成一些操作,如模拟点击.输入.下拉等,这样我们只需要关心操作而不需要关心后台发生了 ...

  7. 使用Selenium模拟浏览器抓取淘宝商品美食信息

    代码: import re from selenium import webdriver from selenium.webdriver.common.by import By from seleni ...

  8. Python爬虫学习==>第十二章:使用 Selenium 模拟浏览器抓取淘宝商品美食信息

    学习目的: selenium目前版本已经到了3代目,你想加薪,就跟面试官扯这个,你赢了,工资就到位了,加上一个脚本的应用,结局你懂的 正式步骤 需求背景:抓取淘宝美食 Step1:流程分析 搜索关键字 ...

  9. 3.使用Selenium模拟浏览器抓取淘宝商品美食信息

    # 使用selenium+phantomJS模拟浏览器爬取淘宝商品信息 # 思路: # 第一步:利用selenium驱动浏览器,搜索商品信息,得到商品列表 # 第二步:分析商品页数,驱动浏览器翻页,并 ...

随机推荐

  1. [开发笔记]-初学WPF之自学笔记

    一:动态加载背景图片 代码: 在窗体加载时,Window_Loaded 方法中: #region 测试动态加载背景图片 /* 1.图片右键 属性: 复制到输出目录:选择“如果较新则复制” 生成操作选择 ...

  2. 解释#ifdef ALLOC_PRAGMA代码段的原理

    By default, the kernel loader will load all driver executables and any global data that you may have ...

  3. 【进阶修炼】——改善C#程序质量(7)

    113,声明变量时考虑最大值. Ushort的最大值是65535,用于不同的用途这个变量可能发生溢出,所以设计时应充分了解每个变量的最大值. 114,MD5不再安全. MD5多用于信息完整性的校验.R ...

  4. jstorm之于storm

    关于流处理框架,在先前的文章汇总已经介绍过Strom,今天学习的是来自阿里的的流处理框架JStorm.简单的概述Storm就是:JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一 ...

  5. PTC FlexPLM rfa 常用功能api

    1.根据款号查询产品 public LCSProduct GetProductByName(String SKC) throws WTException { //声明查询 PreparedQueryS ...

  6. MFC函数——CWnd::OnEraseBkgnd

    CWnd::OnEraseBkgnd afx_msg BOOL OnEraseBkgnd( CDC* pDC ); 返回值: 如果它擦除了背景,则返回非零值:否则返回0. 参数: pDC 指定了设备环 ...

  7. android设置GridView高度自适应,实现全屏铺满效果

    使GridView每个item的高度自适应拉伸,达到整个GridView刚好铺满全屏的效果. public static void setGridViewMatchParent(GridView gr ...

  8. Html5學習重點清單

    SVG webSQL 數據庫 SSE 服務推送 MathML 基於xml語法 Web 存储 webSockets通信 canvas 畫布操作 音頻和視頻 地理位置 Geolocation API We ...

  9. [hadoop读书笔记] Hadoop下各技术应用场景

    1.数据采集 对于数据采集主要分为三类,即结构化数据库采集,日志和文件采集,网页采集. 对于结构化数据库,采用Sqoop是合适的,可以实现结构化数据库中数据并行批量入库到hdfs存储.对于网页采集,前 ...

  10. Python 匿名参数

    #-*- coding:utf-8 -*- #匿名函数 #匿名函数语法格式 ''' 变量 = lambda 参数列表:表达式 ''' func = lambda x,y:x+y a = func(2, ...