前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python模拟登陆 —— 征服验证码 7 京东

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

作者头像
SeanCheney
发布于 2018-04-24 02:26:55
发布于 2018-04-24 02:26:55
1.3K04
代码可运行
举报
文章被收录于专栏:SeanCheney的专栏SeanCheney的专栏
运行总次数:4
代码可运行

登录界面

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

隐藏字段

所以都要获取下来。

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

验证码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.09.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python爬虫之模拟登录京东商城
首先感谢大家的大力支持,博主会持续更新精彩文章,分享更多技术干货。另外,最近在新建的QQ群中结识了一些朋友,气氛很好,大家互相分享技术内容,博主也从中收获了不少,感谢大家,也欢迎更多的小伙伴儿的加入(二维码可点击公众号技术交流获取)。
Python数据科学
2018/08/06
3K0
Python爬虫之模拟登录京东商城
用Python模拟登陆GitHub并获取信息
最近在研究如何对搜狗搜索公众号文章进行爬取,由于需要用到Cookies,所以这回先了解下Cookies的相关知识。
小F
2020/10/09
1.1K0
用Python模拟登陆GitHub并获取信息
Python模拟登陆 —— 征服验证码 3 CSDN
CSDN使用了spring的webflow <input type="hidden" name="lt" value="LT-58187-6D0O7tpTNBVqzLTbyULoyeLt9fMZd1" /> 这个隐藏参数可以理解成每个需要登录的用户都有一个流水号。只有有了webflow发放的有效的流水号,用户才可以说明是已经进入了webflow流程。否则,没有流水号的情况下,webflow会认为用户还没有进入webflow流程,从而会重新进入一次webflow流程,从而会重新出现登录界面。 import r
SeanCheney
2018/04/24
9580
Python爬虫之模拟登录拉勾网
模拟登录想必大家已经熟悉了,之前也分享过关于模拟登录wechat和京东的实战,链接如下:
Python数据科学
2018/08/06
1.2K0
Python爬虫之模拟登录拉勾网
Python模拟登陆 —— 征服验证码 5 拉钩
拉钩使用了动态token,但是在源代码中又写出来了。。。 密码采用了md5双重加密 登录界面 动态token import os import time import json import sys
SeanCheney
2018/04/24
1.2K0
Python模拟登陆 —— 征服验证码 5 拉钩
[Python] 超星学习通作业批量下载
# -*- coding: utf8 -*- #coder:nianboy #time:2022-7-14 import os import re import requests import pandas as pd class ChaoXingWork: def __init__(self, user, password): self.password = password self.user = user self.work_da
纯情
2023/04/27
3930
Python模拟登陆 —— 征服验证码 2 B站
B站的登录密码用了rsa加密(两个大质数的乘积很难进行逆向分解,所以可以用这个乘积来做公钥)。 所以运行py文件之前,使用镜像,先用pip安装rsa库: pip install rsa -i https://pypi.tuna.tsinghua.edu.cn/simple/ 运行: import requests import re import time import sys import json import rsa import os.path import binascii import d
SeanCheney
2018/04/24
1K0
Python模拟登陆 —— 征服验证码 2 B站
Python模拟登陆 —— 征服验证码 4 果壳
果壳的特殊之处是有隐藏的随机token令牌, 登录界面 查看源代码: 隐藏的令牌 import sys import os.path import http.cookiejar import req
SeanCheney
2018/04/24
9030
Python模拟登陆 —— 征服验证码 4 果壳
【爬虫】(四)西电研究生教务系统技术文档
关于教务系统的一系列爬取工作已经初步完成,Holi爬虫组的工作也算正式进入优化阶段。 我们需要根据后台组的需要,转换成CVS或数据库形式。需要和后台组进行商量。
一点儿也不潇洒
2018/08/07
1.5K0
【爬虫】(四)西电研究生教务系统技术文档
Python模拟登陆 —— 征服验证码 9 微博weibo.com
登录界面 抓包分析可以使用Http Analyzer,Filders,但是看起来很复杂,还是使用火狐好(chrome远远没有火狐好用)。 首先,在输入用户名后,会进行预登录,网址为:http://lo
SeanCheney
2018/04/24
1K0
Python模拟登陆 —— 征服验证码 9 微博weibo.com
Python模拟登陆 —— 征服验证码 10 知乎(倒立文字验证码)
知乎的倒立文字验证码 # 登录知乎,通过保存验证图片方式 import urllib.request import urllib.parse import time import http.cookiejar webUrl = "https://www.zhihu.com/login/email"#不能写https://www.zhihu.com/#signin因为不支持重定向 webheader = { # 'Accept': 'text/html, application/xhtml+x
SeanCheney
2018/04/24
8620
Python模拟登陆 —— 征服验证码 10 知乎(倒立文字验证码)
19.SimLogin_case03
# 模拟登录GitHub import requests from lxml import etree class Login(): def __init__(self): self.headers = { 'Referer': 'https://github.com/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, li
hankleo
2020/09/17
2570
Python模拟登陆 —— 征服验证码 6 126邮箱
登录之后,打印侧边栏。 登录界面 import requests import re # 构造 Request headers agent = 'Mozilla/5.0 (Windows NT 5
SeanCheney
2018/04/24
1.7K0
Python模拟登陆 —— 征服验证码 6 126邮箱
Python模拟登陆csdn-隐藏字段
import requests from bs4 import BeautifulSoup url="https://passport.csdn.net/account/login" # 登录页的网
IT架构圈
2018/05/31
1.1K0
模拟登陆我终于还是进了
爬了这么久的教务处,终于还是绕过了千山万水登进来了。 这段时间准备期末考,忙,好久不更博。 年终总结也没有写。 是时候开更啦!
一点儿也不潇洒
2018/08/07
5660
python爬虫滑动验证码_python爬虫爬取京东优惠线报
登陆框就是右面这一个框框了,但是目前我们遇到一个困呐,默认的登陆方式是扫码登陆,如果我们想要以用户民个、密码的形式登陆,就要切换一下。
全栈程序员站长
2022/10/02
6550
Python3爬虫实战【点触验证码】 — 模拟登陆bilibili
在开始之前,需要先注册一个超级鹰账号并申请一个软件ID,注册页面链接为:https://www.chaojiying.com/user/reg/,注册完成后需要在后台添加一个软件ID,进行充值获得积分,一般充一块钱就可以了。
Python研究者
2020/09/28
6450
Python3爬虫实战【点触验证码】 — 模拟登陆bilibili
Python 实现京东自动登录领京豆
今天带大家进行模拟京东登录,并进行签到获取京豆,1000 个京豆 = 10 元,是不是一个发现了一个「发家致富」的好路子?
小小詹同学
2018/07/24
2.9K0
Python 实现京东自动登录领京豆
Python模拟登陆 —— 征服验证码 1 豆瓣
captcha是Completely Automated Public Turing Test to Tell Computers and Humans Apart ,全自动区分计算机和人类的图灵测试
SeanCheney
2018/04/24
1.2K0
Python模拟登陆 —— 征服验证码 1 豆瓣
一不小心,我爬取了100万条微博评论
↑ 关注 + 星标 ~ 有趣的不像个技术号 每晚九点,我们准时相约 郑重声明:本项目及所有相关文章,仅用于经验技术交流,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关 大家好
朱小五
2020/03/10
1.4K0
一不小心,我爬取了100万条微博评论
相关推荐
Python爬虫之模拟登录京东商城
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档