吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16470|回复: 40
收起左侧

[Python 转载] Python实现京东自动登录(自动完成滑块验证)

  [复制链接]
小恋莫小哀 发表于 2019-2-23 16:58
本帖最后由 wushaominkk 于 2019-2-27 11:43 编辑

关注吾爱好久好久了,学了很多东西,第一次想把自己学的分享给大家,望各位大佬多多指教。
前提要配置好webdriver,不会的可以百度一下,我用的是Chrome的。
Python自动登录京东,这里需要填写自己的账号和密码
id = "*********" # 用户账号
passwd = "******" # 用户密码
loadpage(id, passwd)
直接付源码
[Python] 纯文本查看 复制代码
import cv2
import time
import numpy as np
from selenium import webdriver
from urllib import request
from selenium.webdriver.common.action_chains import ActionChains
brower = webdriver.Chrome()
def loadpage(userid, password):
    url = "https://passport.jd.com/new/login.aspx?"
    brower.get(url)
    time.sleep(3)
    s1 = r'//div/div[@class="login-tab login-tab-r"]/a'
    userlogin = brower.find_element_by_xpath(s1)
    userlogin.click()
    # time.sleep(5)
    username = brower.find_element_by_id("loginname")
    username.send_keys(userid)
    userpswd = brower.find_element_by_id("nloginpwd")
    userpswd.send_keys(password)
    # time.sleep(5)
    brower.find_element_by_id("loginsubmit").click()
    time.sleep(3)
    while True:
        try:
            getPic()
        except:
            print("登陆成功----")
            break
    time.sleep(5)
def getPic():
    # 用于找到登录图片的大图
    s2 = r'//div/div[@class="JDJRV-bigimg"]/img'
    # 用来找到登录图片的小滑块
    s3 = r'//div/div[@class="JDJRV-smallimg"]/img'
    bigimg = brower.find_element_by_xpath(s2).get_attribute("src")
    smallimg = brower.find_element_by_xpath(s3).get_attribute("src")
    # print(smallimg + '\n')
    # print(bigimg)
    # 背景大图命名
    backimg = "backimg.png"
    # 滑块命名
    slideimg = "slideimg.png"
    # 下载背景大图保存到本地
    request.urlretrieve(bigimg, backimg)
    # 下载滑块保存到本地
    request.urlretrieve(smallimg, slideimg)
    # 获取图片并灰度化
    block = cv2.imread(slideimg, 0)
    template = cv2.imread(backimg, 0)
    # 二值化后的图片名称
    blockName = "block.jpg"
    templateName = "template.jpg"
    # 将二值化后的图片进行保存
    cv2.imwrite(blockName, block)
    cv2.imwrite(templateName, template)
    block = cv2.imread(blockName)
    block = cv2.cvtColor(block, cv2.COLOR_RGB2GRAY)
    block = abs(255 - block)
    cv2.imwrite(blockName, block)
    block = cv2.imread(blockName)
    template = cv2.imread(templateName)
    # 获取偏移量
    result = cv2.matchTemplate(block, template, cv2.TM_CCOEFF_NORMED) # 查找block在template中的位置,返回result是一个矩阵,是每个点的匹配结果
    x, y = np.unravel_index(result.argmax(), result.shape)
    # print("x方向的偏移", int(y * 0.4 + 18), 'x:', x, 'y:', y)
    # 获取滑块
    element = brower.find_element_by_xpath(s3)
    ActionChains(brower).click_and_hold(on_element=element).perform()
    ActionChains(brower).move_to_element_with_offset(to_element=element, xoffset=y, yoffset=0).perform()
    ActionChains(brower).release(on_element=element).perform()
    time.sleep(3)


if __name__ == '__main__':
    id = "*********" # 用户账号
    passwd = "******" # 用户密码
    loadpage(id, passwd)

免费评分

参与人数 11吾爱币 +12 热心值 +10 收起 理由
随行者 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
IMRE + 1 + 1 用心讨论,共获提升!
vsyour + 1 我很赞同!
Leslie夜阑静 + 1 + 1 热心回复!
天域至尊 + 1 + 1 用心讨论,共获提升!
ZOR + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
爬小萌新虫 + 1 + 1 用心讨论,共获提升!
duanjia0912 + 1 + 1 热心回复!
82110588 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Zbuter + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 小恋莫小哀 发表于 2019-2-23 21:32
Zbuter 发表于 2019-2-23 17:17
不说别的  把登陆成功放到except中是不是不太好。

说得对,但是这个是获取不到登录验证图片的时候就算登录成功了
Zbuter 发表于 2019-2-24 12:34
小恋莫小哀 发表于 2019-2-23 21:32
说得对,但是这个是获取不到登录验证图片的时候就算登录成功了

可以在getpic内加try except然后返回一个bool值,根据返回的True和False来判断是否登录成功。
Zbuter 发表于 2019-2-23 17:17
不说别的  把登陆成功放到except中是不是不太好。
duanjia0912 发表于 2019-3-1 16:49
谢谢,,收藏一下,,
huangst 发表于 2019-3-15 11:07
测试了,貌似成功概率很低
sdtfll 发表于 2019-3-15 19:24 来自手机
收藏,,,,
runfog 发表于 2019-3-17 01:15
要配置好webdriver
jik666 发表于 2019-3-26 11:56
刚好正在学这方面的使用,Zbuter的建议都很好,一并学习了!
xiaoyao008 发表于 2019-3-26 12:00
感谢楼主分享,支持一下!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 05:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表