post请求跳转页面_Python post请求模拟登录淘宝并爬取商品列表!

一、前言

大概是一个月前就开始做淘宝的爬虫了,从最开始的用selenium用户配置到selenium模拟登录,再到这次的post请求模拟登录。一共是三篇博客,记录了我爬取淘宝网的经历。期间也有朋友向我提出了不少问题,比如滑块失败,微博登录失败等,可以说用selenium模拟登录这方面,坑特别多,直接加载用户配置又很笨重,效率低下。所以这次尝试构造post请求表单,模拟登录。

二、模拟登录

1)用浏览器走一遍登录过程

先把淘宝网的cookies全部清除,然后访问淘宝:https://www.taobao.com,这时候是不需要登录的。

在搜索框搜索iphone,立即跳出了登录页面,它的url是:https://login.taobao.com/member/login.jhtml?redirectURL=http%3A%2F%2Fs.taobao.com%2Fsearch%3Fq%3Diphone%26imgfile%3D%26commend%3Dall%26ssid%3Ds5-e%26search_type%3Ditem%26sourceId%3Dtb.index%26spm%3Da21bo.2017.201856-taobao-item.1%26ie%3Dutf8%26initiative_id%3Dtbindexz_20170306&uuid=f6dd176ff336683f5d47fc1cb16504af

很长很长,但标红的这部分url很重要,redirectURL是重定向url,登录后会跳转到这个url,当然这个是经过url编码的。

340f6d33caa22603fac97d820d61b214.png

90afe402a6b26b1162fca9f18200612b.png


其余后面的参数很乱,不知道有用没用,先试一下,把后面的参数去掉,访问https://login.taobao.com/member/login.jhtml?redirectURL=http%3A%2F%2Fs.taobao.com%2Fsearch%3Fq%3Diphone看看能不能行:

3fe6bb6a39f91e91145c1e0882fedabc.png

90afe402a6b26b1162fca9f18200612b.png


可以进入登录页面,那能不能登录呢?

a5c025a21c21418bbbee5f16d42c0655.png

90afe402a6b26b1162fca9f18200612b.png


好,正如上面所说,跳转到了这个url。

2)用抓包工具分析登录过程

既然可行,那么接着再来一次,这次看看这个过程都发起了哪些请求,提交了哪些数据。(别忘记清除cookies)

可以使用浏览器开发者模式也可以使用抓包工具Fiddler,使用浏览器的话要打开Preserve log

222f5ee70ecfd919fb966e8ef40b007c.png

90afe402a6b26b1162fca9f18200612b.png


我用的是Fiddler

设置抓取的User-Agents为Chrome

c3444d4d6f6db17b8663cd0b8f7ef68a.png

90afe402a6b26b1162fca9f18200612b.png


直接访问:https://login.taobao.com/member/login.jhtml?redirectURL=http%3A%2F%2Fs.taobao.com%2Fsearch%3Fq%3Diphone

点击登录。查看请求记录。

b51d4c4d5a7c4c4094a647db67ec9fca.png

90afe402a6b26b1162fca9f18200612b.png


这是两个非常重要的url

第一个是最开始访问的登录页面,一个普通的get请求,第二个就不同了,它是一个post请求,其中表单包含了大量的数据信息

0bb4208fe529a97333e0ffb871be9892.png

90afe402a6b26b1162fca9f18200612b.png


内容虽然很多,但经过我多次的测试和比对后,发现了如下几条规律:

1、loginId一眼就可以看出是账号,ua猜测为一种加密后的用户标识,password2猜测为加密后的密码。这三条信息可以当作固定值反复使用

2、_csrf_token, umidToken, hsiz隐藏在登录页面里

ebd7556a808e767eb0149ece14798f7d.png

90afe402a6b26b1162fca9f18200612b.png

3、其他的都是不变的

3)代码实战

文件名为login.py,类名为Login

class Login:
    """
    模拟登录并获取cookies
    """

    def __init__
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
可以使用 Flask 中的 redirect 和 url_for 函数来实现以 POST 方式跳转网页并传递参数。具体实现方法可以参考以下代码: ```python from flask import Flask, redirect, url_for, request app = Flask(__name__) @app.route('/login', methods=['POST']) def login(): username = request.form['username'] password = request.form['password'] # 验证用户名和密码 if username == 'admin' and password == '123456': # 登录成功,跳转到首页并传递参数 return redirect(url_for('index', username=username)) else: # 登录失败,返回登录页面 return redirect(url_for('login_page')) @app.route('/') def index(): username = request.args.get('username') return f'欢迎您,{username}!' @app.route('/login') def login_page(): return ''' <form method="post" action="/login"> <input type="text" name="username" placeholder="用户名"><br> <input type="password" name="password" placeholder="密码"><br> <button type="submit">登录</button> </form> ''' if __name__ == '__main__': app.run() ``` 在上面的代码中,我们定义了一个 `/login` 路由,用于处理用户登录请求。当用户提交登录表单时,我们会获取表单中的用户名和密码,进行验证。如果验证通过,我们就使用 `redirect` 函数跳转到首页,并使用 `url_for` 函数生成首页的 URL,并在 URL 中传递用户名参数。如果验证失败,我们就使用 `redirect` 函数跳转回登录页面。 在首页的路由中,我们使用 `request.args.get` 方法获取 URL 中传递的参数,并在页面中显示欢迎消息。 在登录页面的路由中,我们定义了一个简单的 HTML 表单,用于让用户输入用户名和密码,并提交登录请求。注意,我们在表单中指定了 `method="post"`,表示这是一个 POST 请求。当用户点击登录按钮时,表单数据会被提交到 `/login` 路由中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值