def needIdenCode(self): #第一次登录获取验证码尝试,构建request # request = Request(self.loginURL, self.postData, self.loginHeaders) # response = self.opener.open(request) #得到第一次登录尝试的相应 # content = response.read().decode('gbk') # status = response.getcode() # 获取状态吗 response = requests.post(url=self.loginURL, headers=self.loginHeaders, data=json.dumps(self.postData), proxies=MyRequests._get_proxies()) content = response.content.decode('gbk') status = response.status_code #状态码为200,获取成功 if status == 200: print("获取请求成功") #u8bf7u8f93u5165u9a8cu8bc1u7801这六个字是请输入验证码的utf-8编码 pattern = re.compile(u'u8bf7u8f93u5165u9a8cu8bc1u7801', re.S) result = re.search(pattern, content) #如果找到该字符,代表需要输入验证码 if result: print("此次安全验证异常,您需要输入验证码") return content #否则不需要 else: print("此次安全验证通过,您这次不需要输入验证码") return False else: print("获取请求失败")
def _judge_is_taobao_head_img(self, url): ''' 判断是否为淘宝默认头像地址 :param url: :return: ''' tmp_proxies = MyRequests._get_proxies() try: _res = requests.get(url=url, headers=self.headers, proxies=tmp_proxies) self.my_lg.info(str(_res.url)) if _res.url == 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_40x40.jpg': return True else: return False except: self.my_lg.info('检测图片地址时网络错误! 跳过!') return False
def __init__(self): #登录的URL self.loginURL = "https://login.taobao.com/member/login.jhtml" #代理IP地址,防止自己的IP被封禁 # self.proxyURL = 'http://120.193.146.97:843' self.proxyURL = 'http://' + MyRequests._get_proxies()['http'] #登录POST数据时发送的头部信息 self.loginHeaders = { 'Host': 'login.taobao.com', 'User-Agent': get_random_pc_ua(), 'Referer': 'https://login.taobao.com/member/login.jhtml', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'Keep-Alive' } self.headers = { '': 'path: /login.htm?_input_charset=utf-8&ttid=h5%40iframe', 'content-length': '3015', 'cache-control': 'max-age=0', 'origin': 'https://login.m.taobao.com', 'upgrade-insecure-requests': '1', 'content-type': 'application/x-www-form-urlencoded', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'referer': 'https://login.m.taobao.com/login.htm?from=sm&ttid=h5@iframe&tpl_redirect_url=https%3A%2F%2Fsec.taobao.com%2Fquery.htm%3Faction%3DQueryAction%26event_submit_do_login%3Dok%26smApp%3Dmalldetailskip%26smPolicy%3Dmalldetailskip-h5-anti_Spider-h5SS-checklogin%26smCharset%3DGBK%26smTag%3DMTgzLjE1OS4xNzcuMTMwLCxiY2Y0NWZkZjVlYmI0ZGE2OTlkZjNkZmUyYTA1ODc4Mg%253D%253D%26captcha%3Dhttps%253A%252F%252Fsec.taobao.com%252Fquery.htm%26smReturn%3Dhttps%253A%252F%252Fdetail.m.tmall.com%252Fitem.htm%253Fid%253D20739535568%26smSign%3DEh51d83i2uzo2b2zGtgKRg%253D%253D', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9', 'cookie': 'isg=BAEBfhDFP4K9JlO2YSgx_sw0EEvbhnVHYzo4S2NWsohnSiMcoH_n8l8IKL4Mug1Y', } #用户名 self.username = '' #ua字符串,经过淘宝ua算法计算得出,包含了时间戳,浏览器,屏幕分辨率,随机数,鼠标移动,鼠标点击,其实还有键盘输入记录,鼠标移动的记录、点击的记录等等的信息 self.ua = '107#ssznSzS9s2xAImllPVytXzO1XnIggOmR9LcTi88ngXX9lXFu//94sFxKXrrOg/ZvsLFLTAtXgFXxxXGQ/CxRlaEJXq6nuVE9luz8TdFDyJB+BaUtsYc0P894xppFjjidAOaEIdSveZpfnD1iDG2n7ISDflmisXa8KMKMoU/xPqBLTYtnO8KQVMpYmoBPOShgsCbDNSCXXQGLbLURQXXlDI5M9IjfOd3dPUh9PEUyljo+bL1NmKqXt3/weVQb8v9QkE/6k9DzC5vWQJAec6+1aOnflejd87g7m9jYygKX3ccb1dbwQmh6qYOcuWlw3mQmKlYV2yr7t7xqEmG01vFkqYVr3/Lpu6tg29V22jXmoxcufdUbepynwC/HwUCiCgOKKZCNjE3OCy4bem2r8dEWdr9d3rhGvmt3jpiUK7XJCy4bek5r8dEmdrtGC3iUbfub25COijn8oEkDvpRIdDy/bqy48C+DCf3AiLpng9gn82splff8c6rjantrG/Cf81V6y9FAyii/Xf53Z5Zr0xMzheiteOnGC5FsmE/46EtzI5IZQkAdv7VYrrexvYMzGvQygi+OmTjae5dbF6w0EJjyE8T4lInDXvIvOoVYPyZ7XP1MbY38+FXEEITAla==' #密码,,淘宝对此密码进行了加密处理,256位 self.password2 = '02d12254b4a503974749e4ee16f72e76081dce05e8fe449b487573ba72f14d47f9df56a8377afd48194afa7053aa1829cd9d3a55476a5510128244fea80fbed8a0c798146912122dcce4059be5ba85b39cc7d51fae6629a103d527256a3a48327c6e4cb1350806fa15e9ea07696cdce9c91658718f72b2f325b0d0784730e9fe' self.post = { 'ua': self.ua, 'TPL_checkcode': '', 'CtrlVersion': '1,0,0,7', 'TPL_password': '', 'TPL_redirect_url': 'http://i.taobao.com/my_taobao.htm?nekot=udm8087E1424147022443', 'TPL_username': self.username, 'loginsite': '0', 'newlogin': '******', 'from': 'tb', 'fc': 'default', 'style': 'default', 'css_style': '', 'tid': 'XOR_1_000000000000000000000000000000_625C4720470A0A050976770A', 'support': '000001', 'loginType': '4', 'minititle': '', 'minipara': '', 'umto': 'NaN', 'pstrong': '3', 'llnick': '', 'sign': '', 'need_sign': '', 'isIgnore': '', 'full_redirect': '', 'popid': '', 'callback': '', 'guf': '', 'not_duplite_str': '', 'need_user_id': '', 'poy': '', 'gvfdcname': '10', 'gvfdcre': '', 'from_encoding ': '', 'sub': '', 'TPL_password_2': self.password2, 'loginASR': '1', 'loginASRSuc': '1', 'allp': '', 'oslanguage': 'zh-CN', 'sr': '1366*768', 'osVer': 'windows|6.1', 'naviVer': 'firefox|35' } #将POST的数据进行编码转换 self.postData = urlencode(self.post) #设置代理 self.proxy = ProxyHandler({'http': self.proxyURL}) #设置cookie self.cookie = LWPCookieJar() #设置cookie处理器 self.cookieHandler = HTTPCookieProcessor(self.cookie) #设置登录时用到的opener,它的open方法相当于urllib2.urlopen self.opener = build_opener(self.cookieHandler, self.proxy, HTTPHandler)