当前位置:  开发笔记 > 编程语言 > 正文

Python POST请求不返回HTML,请求启用JavaScript

如何解决《PythonPOST请求不返回HTML,请求启用JavaScript》经验,为你挑选了1个好方法。

我正在尝试登录我的富国银行帐户并查看我的交易历史记录,以便我可以使用它们来跟踪我的财务状况.如果我可以访问页面的HTML,我可以执行抓取部分.我遇到的问题是到达那里,下面的代码给我带来了很多胡言乱语.

####Bring in BeautifulSoup and urllib.
import bs4
import urllib.request
import requests

####Navigate to the website.
url = 'https://connect.secure.wellsfargo.com/auth/login/do'
payload = {"j_username":"USERNAME", "j_password":"PASSWORD"}
r = requests.post(url, payload)
print(r.text)

此代码输出以下内容:

    

    

    

    

    

    

    

我为可怕的格式道歉,但我不知道如何处理它.另外,为了长度的缘故,我在中间删除了一个用星号代替的大的任意部分.

对我而言,我看到的关键是"请启用JavaScript以查看页面内容." 这个输出实际上是JS吗?我如何处理Python的任何内容?我根本不知道这告诉我什么,我非常感谢你能提供的任何帮助.

谢谢.



1> Backgammon..:

我知道已经花了很多时间,但我可以在这里给出一些关闭.您所看到的是由F5 Networks,Inc.的优秀人员销售的机器人失败代码,旨在防止天真的网络浏览器和抓取工具访问使用它的网站.

简而言之,这是混淆的Javascript,它通过一系列迭代步骤来计算值,这些步骤执行各种特定于浏览器的Javascript功能,并利用一些相当粗鲁的Javascript语言行为.该值将作为cookie发送回Wells Fargo,并作为导航所需的部分网络表单.只使用无头浏览器不会削减它 - 计算中有一些技巧专门用于对抗无头浏览器和与它们一起使用的Javascript引擎.错过任何技巧都不会导致任何失败; 相反,它会以一种让你难以辨别错过的方式抛弃最终结果.

从理论上讲,它可以破译代码并用您选择的语言模拟所有计算; 我知道数据汇总公司写的一个成功的对策,但该代码不公开供公众阅读.或者,您可以在JS解释器中找出正确执行它所需的内容.我不记得所有的细节,但它比看起来容易.您无需对整个工程进行逆向工程,只需在正确的环境中运行即可.您需要一个虚拟窗口对象和更多的虚拟对象,无论代码正在寻找什么,例如您的环境中的navigator.userAgent,还有其他东西.

出于实际目的,编写对策可能不值得.如果您是一个组织,请要列入白名单.

如果你有兴趣的挑战,这里是一个(也许明显)的起点-乱码的长串eval((ie9rgb4=function (){var m='function ()... .slice...一部分被加密的代码.紧随其后的for循环包含字符转换.您可以复制在该循环中执行的操作以解密第一级混淆.在调试器处于活动状态的情况下,通过普通浏览器登录该站点,观察发送的请求和cookie,以了解您正在寻找的最终目标,并尝试将其与您看到的JS代码相关联.

您可能还会发现以下值的映射在某些方面很有用:

{"$$$", "7"},
{"$$$$", "f"},
{"$$$_", "e"},
{"$$_", "6"},
{"$$_$", "d"},
{"$$__", "c"},
{"$_", "constructor"},
{"$_$", "5"},
{"$_$$", "b"},
{"$_$_", "a"},
{"$__", "4"},
{"$__$", "9"},
{"$___", "8"},
{"_", "u"},
{"_$", "o"},
{"_$$", "3"},
{"_$_", "2"},
{"__", "t"},
{"__$", "1"},
{"___", "0"}

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有