selenium chrome登陆手机 pc淘宝
接口登录淘宝,困难度极高,没有人已经实现过。
淘宝登录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淘宝的更多相关文章
- Selenium+Chrome+PhantomJS爬取淘宝美食
搜索关键字 利用selenium驱动浏览器搜索有关键字,得到查询后的商品列表 分析页码并翻页 得到商品码数,模拟翻页,得到后续页面的商品列表 分析提取商品内容 利用PyQuery分析源码,解析得到商品 ...
- Python爬虫系列-Selenium+Chrome/PhantomJS爬取淘宝美食
1.搜索关键字 利用Selenium驱动浏览器搜索关键字,得到查询后的商品列表 2.分析页码并翻页 得到商品页码数,模拟翻页,得到后续页面的商品列表 3.分析提取商品内容 利用PyQuery分析源码, ...
- Selenium+Chrome+PhantomJS 爬取淘宝
https://github.com/factsbenchmarks/taobao-jingdong 一 简单铺垫 Selenium负责驱动浏览器与python对接 PhantomJS负责渲染解析Ja ...
- Selenium模拟浏览器抓取淘宝美食信息
前言: 无意中在网上发现了静觅大神(崔老师),又无意中发现自己硬盘里有静觅大神录制的视频,于是乎看了其中一个,可以说是非常牛逼了,让我这个用urllib,requests用了那么久的小白,体会到sel ...
- 使用selenium模拟浏览器抓取淘宝信息
通过Selenium模拟浏览器抓取淘宝商品美食信息,并存储到MongoDB数据库中. from selenium import webdriver from selenium.common.excep ...
- 16-使用Selenium模拟浏览器抓取淘宝商品美食信息
淘宝由于含有很多请求参数和加密参数,如果直接分析ajax会非常繁琐,selenium自动化测试工具可以驱动浏览器自动完成一些操作,如模拟点击.输入.下拉等,这样我们只需要关心操作而不需要关心后台发生了 ...
- 使用Selenium模拟浏览器抓取淘宝商品美食信息
代码: import re from selenium import webdriver from selenium.webdriver.common.by import By from seleni ...
- Python爬虫学习==>第十二章:使用 Selenium 模拟浏览器抓取淘宝商品美食信息
学习目的: selenium目前版本已经到了3代目,你想加薪,就跟面试官扯这个,你赢了,工资就到位了,加上一个脚本的应用,结局你懂的 正式步骤 需求背景:抓取淘宝美食 Step1:流程分析 搜索关键字 ...
- 3.使用Selenium模拟浏览器抓取淘宝商品美食信息
# 使用selenium+phantomJS模拟浏览器爬取淘宝商品信息 # 思路: # 第一步:利用selenium驱动浏览器,搜索商品信息,得到商品列表 # 第二步:分析商品页数,驱动浏览器翻页,并 ...
随机推荐
- Docker常用命令<转>
创建redis服务端docker run -p 6379:6379 -d --name redis-server docker.io/redis:3.0.7 redis-server -- port ...
- Android——shape和selector和layer-list的(详细说明 转)
<shape>和<selector>在Android UI设计中经常用到.比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape> ...
- linux系统管理命令(五)
[教程主题]:1.系统管理命令 [1.1]用户和组管理 在Linux操作系统中,任何文件都归属于某一特定的用户,而任何用户都隶属于至少一个用户组.用户是否有权限对某文件进行访问.读写以及执行,受到系统 ...
- 【LINUX】——gvim中如何配置字体和背景
打开你的.vimrc文件,添加如下内容: set gfn=Tlwg\ Typist\ 16 colorscheme desert 然后保存退出,source .vimrc.如此,每次打开gvim时,加 ...
- Sublime Text3工具的安装、破解、VIM功能vintage插件教程
1.安装Sublime Text 3 下载安装:http://www.sublimetext.com/3 Package Control安装:https://sublime.wbond.net/in ...
- Linux_iptables
Linux:网络防火墙 netfilter:Frame iptables: 生成防火墙规则,并附加到netfilter上实现数据报文过滤 NAT mangle等规则生成的工具 TCP有限状态机 LIS ...
- (笔记)Linux下的CGI和BOA使用期间遇到的问题汇总
前段时间在做C/S模式下的视频监控,这段时间是B/S模式下的.期间遇到了不少问题,有些问题一卡就是几天,有些问题的解决办法在办法在网上也不是很好找,所以还有些问题虽然得到了临时解决,但是其原理现在我本 ...
- group by 小结
前提:SQL函数的两个概念 聚敛函数:对多条记录进行操作的函数,如SUM.COUNT.MIN.MAX.AVG. 其他函数:对单条记录进行操作的函数,如ABS.CEIL.SQRT等. 举个例子: SEL ...
- python numpy logic_and
>>> import numpy as np >>> np.logical_and(True, False) False >>> np.logic ...
- Maven的生命周期是为了对所有的构建过程进行了抽象了,便于统一。
Maven的生命周期是为了对所有的构建过程进行了抽象了,便于统一. clean(清理) cleanup(清理所有) 此生命周期旨在给工程做清理工作,它主要包含以下阶段: pre-clean - 执行项 ...