Python模拟登陆 —— 征服验证码 7 京东

简介: 登录界面京东的登录表单设置了许多隐藏字段,如下所示:隐藏字段所以都要获取下来。同样也是输错三次之后出现authcode。验证码import requestsfrom bs4 import Beautif...
img_08c70e29e97736e7e01bc7029dbe1cfd.png
登录界面

京东的登录表单设置了许多隐藏字段,如下所示:

img_7f6c0726393ddf7cd9466685ce5d7f90.png
隐藏字段

所以都要获取下来。

同样也是输错三次之后出现authcode。

img_591e526b25228100eb85611bcb8b94d2.png
验证码
import requests
from bs4 import BeautifulSoup
import time

try:
    input = raw_input
except:
    pass

class JDlogin(object):
    def __init__(self,un,pw):
        self.headers = {'User-Agent':"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
                        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
                        'Accept-Encoding':'gzip, deflate, sdch',
                        'Accept-Language':'zh-CN,zh;q=0.8',
                        'Connection':'keep-alive',
                        }
        self.session = requests.session()
        self.login_url = "http://passport.jd.com/uc/login"
        self.post_url = "http://passport.jd.com/uc/loginService"
        self.auth_url = "https://passport.jd.com/uc/showAuthCode"
        self.un = un
        self.pw = pw

    def get_authcode(self,url):
        self.headers['Host'] = 'authcode.jd.com'
        self.headers['Referer'] = 'https://passport.jd.com/uc/login'
        response = self.session.get(url, headers = self.headers)
        with open('authcode.jpg','wb') as f:
            f.write(response.content)
        authcode = input("plz enter authcode:")
        return authcode

    def get_info(self):
        '''获取登录相关参数'''
        try:
            page = self.session.get(self.login_url, headers = self.headers )
            soup = BeautifulSoup(page.text,"lxml")
            input_list = soup.select('.form input')

            data = {}
            data['uuid'] = input_list[0]['value']
            data['eid'] = input_list[4]['value']
            data['fp'] = input_list[5]['value']
            data['_t'] = input_list[6]['value']
            rstr = input_list[7]['name']
            data[rstr] = input_list[7]['value']
            acRequired = self.session.post(self.auth_url, data={'loginName':self.un}).text #返回({"verifycode":true})或({"verifycode":false})

            if 'true' in acRequired:
                print ('need authcode, plz find it and fill in ')
                acUrl = soup.select('.form img')[0]['src2']
                acUrl = 'http:{}&yys={}'.format(acUrl,str(int(time.time()*1000)))
                authcode = self.get_authcode(acUrl)
                data['authcode'] = authcode
            else:
                data['authcode'] = ''

        except Exception as e:
            print (e)
        finally:
            return data
    def login(self):
        
        postdata = self.get_info()
        postdata['loginname'] = self.un
        postdata['nloginpwd'] = self.pw
        postdata['loginpwd'] = self.pw
        try:
            self.headers['Host'] = 'passport.jd.com'
            self.headers['Origin'] = 'https://passport.jd.com'
            self.headers['X-Requested-With'] = 'XMLHttpRequest'
            login_page = self.session.post(self.post_url, data = postdata, headers = self.headers)
            print (login_page.text)  #若返回{“success”:”http://www.jd.com”},说明登录成功
        except Exception as e:
            print (e)

if __name__=="__main__":
    username = input("plz enter username:")
    password = input("plz enter password:")
    JD = JDlogin(username,password)
    JD.login()
目录
相关文章
|
1月前
|
机器学习/深度学习 自然语言处理 数据可视化
基于Python大数据的京东产品评论的情感分析的研究,包括snwonlp情感分析和LDA主题分析
本文探讨了基于Python大数据技术对京东产品评论进行情感分析的研究,涵盖了文本预处理、情感分类、主题建模等步骤,并运用了snwonlp情感分析和LDA主题分析方法,旨在帮助电商企业和消费者做出更明智的决策。
基于Python大数据的京东产品评论的情感分析的研究,包括snwonlp情感分析和LDA主题分析
|
1月前
|
JSON 算法 API
京东以图搜图功能API接口调用算法源码python
京东图搜接口是一款强大工具,通过上传图片即可搜索京东平台上的商品。适合电商平台、比价应用及需商品识别服务的场景。使用前需了解接口功能并注册开发者账号获取Key和Secret;准备好图片的Base64编码和AppKey;生成安全签名后,利用HTTP客户端发送POST请求至接口URL;最后解析JSON响应数据以获取商品信息。
|
2月前
|
并行计算 Java 大数据
深度探索:Python异步编程如何优雅征服IO密集型任务,让CPU密集型任务也臣服!
【7月更文挑战第17天】Python的异步编程借助`asyncio`库提升IO密集型任务效率,如并发下载网页,通过`async def`定义协程,`asyncio.gather`并发执行。在CPU密集型任务中,结合`ThreadPoolExecutor`实现并行计算,利用多核优势。`asyncio.run`简化事件循环管理,使Python在高负载场景下表现更佳。
46 4
|
2月前
|
Python
京东技术团队撰写的整整986页《漫画学Python》到底有什么魅力?
这是一本Python入门书。无论您是想学习编程的小学生,还是想参加计算机竞赛的中学生,抑或是计算机相关专业的大学生,甚至是正在从事软件开发的职场人,本书都适合您阅读和学习。但您若想更深入地学习Python并进行深层次应用,则需要选择其他相关图书。
京东技术团队撰写的整整986页《漫画学Python》到底有什么魅力?
这是一本Python入门书。无论您是想学习编程的小学生,还是想参加计算机竞赛的中学生,抑或是计算机相关专业的大学生,甚至是正在从事软件开发的职场人,本书都适合您阅读和学习。但您若想更深入地学习Python并进行深层次应用,则需要选择其他相关图书。
|
2月前
|
机器人 计算机视觉 Python
使用Python生成图片验证码
本文介绍了如何使用Python的PIL库生成简单的验证码图片和文本。通过实现CaptchaGenerator类,我们可以轻松生成包含随机字符和干扰元素的验证码。这种技术可以应用于Web应用程序中,用于增强用户验证的安全性和可靠性。
|
2月前
|
数据可视化 数据挖掘 数据处理
数据之美,尽收眼底!Python数据分析师如何利用Matplotlib、Seaborn打造视觉盛宴,征服数据世界?
【7月更文挑战第22天】Python的Matplotlib和Seaborn库是数据可视化的利器。Matplotlib基础强大,灵活定制,适合各类图表;Seaborn在其上层封装,提供美观的统计图形,简化复杂操作。结合使用,它们助数据分析师揭示数据规律,打造视觉盛宴,征服数据世界。示例代码分别展示了如何绘制正弦波图和箱线图。
30 0
|
3月前
|
存储 JavaScript 前端开发
Python Django下的实现注册验证码
摘要: 使用Python生成随机验证码图像,包括干扰线和噪点,保存到静态文件夹,并将验证码文本存储到数据库。数据库表包含ID、验证码图片路径和验证码文本。JavaScript函数`getRandomInt`生成1到300的随机数,用于请求对应数据库条目的验证码和图片。XMLHttpRequest发送POST请求到服务器,视图函数返回指定ID的验证码图片路径,实现验证码的动态刷新。
|
3月前
|
开发者 Python
GitHub飙升!京东认证的“Python编程入门三剑客”究竟好在哪?
Python凭借着简单易学、功能强大,已经跃居TIOB编程语言榜首,并且已经开始了它的霸榜之旅。如何选择一套适合自己的Python学习教程,是每个Python爱好者面临的首要问题。
|
3月前
|
开发者 Python
GitHub飙升!京东认证的“Python编程入门三剑客”究竟好在哪?
Python凭借着简单易学、功能强大,已经跃居TIOB编程语言榜首,并且已经开始了它的霸榜之旅。如何选择一套适合自己的Python学习教程,是每个Python爱好者面临的首要问题。 今天给小伙伴们带来的是图灵&京东认证的“Python编程入门三剑客”,先看《Python编程从入门到实践》,打好Python入门的底子;再看《Python编程快速上手》,增强用Python处理工作中实际问题的能力;最后看《Python极客项目编程》,用充满想象力的实战案例,充分理解Python编程的奥秘,完成从小白到大神的进化。