【Solana】SOL区块链破解生成代币
1.8K subscribers
202 photos
1 video
2 files
3 links
【Solana】SOL区块链破解生成代币
Download Telegram
模拟登录
爬取很多目标网站的页面信息时都有登录的要求,本节将讲解如何使用程序进行表单提交进而完成用户登录。
一般的模拟登录流程如下:
1. 查看需要提交的表单信息
通过页面及chrome工具查看request中的request payload即可确认登录时需要提交的数据有哪些。再此提醒注意,不要认为页面上填写的用户名和密码以及验证码就是请求的全部参数,很多网站会自动添加其他参数(如时间戳,版本信息,网站附加字符等),所以要认真检查request的过程提交参数有哪些。
2. 组织表单数据
确定了要提交的数据后就需要组织数据,组织数据时一般包括组装用户名,密码,获取相关参数,进行参数加密(一般会对密码进行加密,需要研究网站加密算法)等。
3. 数据提交,结果判断
提交通过requests.post方法完成,提交后获得返回数据,通过http返回的状态进行判断,当response.status==200时证明提交成功。

SOL区块链破解生成代币 破解合约绕过区块链制定新的规则合约代币 #区块链破解 #代币生成 需要做的人可以来联系:@Perlah544
模拟登录
本节课将以登陆知乎为例介绍模拟登录的具体方法和实现。

首先研究知乎的登录页面,确定要提交的表单信息。进入知乎登录页面后可以看到页面需要输入用户名,密码和验证码,输入相关信息后点击提交,使用chrome查看相关信息可以看到真正提交的数据除了上述三个还有xsrf,该变量可以在查看网页源代码中查到,只需要提取出具体的值即可。

首先看如何获取xsrf变量的值
def search_xsrf():
url= " http://www.zhihu.com " #登录页面地址
r=requests.get(url)#获取页面
if int(r.status_code)!=200:
raise NetworkError(u" requestcaptcha network error")
results=re.compile(r"\<input\stype=\"hidden\"\sname=\"_xsrf\"\svalue=\"(\S+)\"",re.DOTALL).findall(r.text)
#使用正则表达式提取xsrf的值
if len(results)<1:
print(u"can not get XSRF")
return None
return results[0]#返回xsrf的值,供后续使用

SOL区块链破解生成代币 破解合约绕过区块链制定新的规则合约代币 #区块链破解 #代币生成 需要做的人可以来联系:@Perlah544
然后获取页面验证码,代码如下
def download_captcha():
url= " http://www.zhihu.com/captcha.gif "#验证码地址
r = s.get(url,params={"r":str(int(time.time() * 1000)),"type":"login"})#请求获取验证码,params为参数,在chrome中可以看到
if int(r.status_code)!=200:#http返回状态不为200则报错
raise NetworkError(u"request captcha error")
image_name=u"verify."+r.headers['content-type'].split("/")[1]#获取文件名
open(image_name,"wb").write(r.content)#将验证码保存到本地
print (u"正在调用外部程序渲染验证码....")
captcha_code=raw_input("please enter captcha: ")#输入保存的验证码
return captcha_code#返回验证码,供后续使用

接下来是组织提交的数据

def build_form(account,password):
form={account_type:account,"password":password,"remember_me":'true'}#用户名,密码及是否'记住我'
form['_xsrf']=search_xsrf()#调用获取xsrf的方法获得xsrf
form['captcha']=download_captcha()#调用获得验证码的方法获得验证码
return form

SOL区块链破解生成代币 破解合约绕过区块链制定新的规则合约代币 #区块链破解 #代币生成 需要做的人可以来联系:@Perlah544
进行数据提交,判断是否登录成功
def upload_form(form):
url= " http://www.zhihu.com/login/email "
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36",
'Host': "www.zhihu.com",
'Origin': "http://www.zhihu.com",
'Referer': "http://www.zhihu.com/",
'X-Requested-With': "XMLHttpRequest",

}#构造请求头
r=s.post(url,data=form,headers=headers)#post提交请求数据
if int(r.status_code)!=200:
raise NetworkError(u"upload form failed")
if r.headers['content-type'].lower() =="application/json":#返回数据判断
result=r.json()#将返回数据转为json格式
if result["r"]==0:
print(u"login success")
return{"result":True}
elif result["r"]==1:
print(u"login failed")
return

以上就是模拟登录知乎的程序,完成代码请查看文件夹中的zhihuLogin.py。验证码图片保存在和zhihuLogin.py相同的目录下,在实验环境下可能无法查看验证码,请在自己机器中运行代码。

SOL区块链破解生成代币 破解合约绕过区块链制定新的规则合约代币 #区块链破解 #代币生成 需要做的人可以来联系:@Perlah544
爬虫相关知识
爬虫的主要工作是爬取网页上的各类信息,目标网站出于保护信息,降低负载等原因一般会有反爬措施,此外不同网站有不同的页面结构和页面生成策略,所以在爬取网站信息时有很多通用的小知识需要了解和掌握。
1.设置cookie
有些网站需要登录后才能进行下一步操作,此时发送的请求一般需要携带cookies,发送带有cookies的请求流程一般为首先获取cookies,然后使用cookies。requests获得cookies的语句如下 mycookies=requests.get(url).headers.get('cookie')
2.保持会话
在需要登录的网站中,除了发送带有cookies的请求外还需要保持会话,使用requests.Session()可以保持会话,这样登录以后就可以继续操作其他页面。
3.使用代理
当频繁爬取一个目标网站时,目标网站可能会随机弹出验证码或者将爬虫的源IP封掉,禁止访问。此时,使用代理便可解决以上两个问题。使用代理的一般代码如下 proxies = {"http":"http://XX.XX.XX.XX:XXXX"} response = requests.get(url=url, proxies=proxies)
4.验证码识别
对于需要输入验证码的网站,有两种解决办法:一种是手工输入提交,另一种算法识别。目前对于简单的验证码可以使用google的pytesser库进行识别,但复杂验证码识别率很低,所以对于需要填写验证码的页面还是手工查看输入提交效率更高。
5.伪装浏览器
将爬虫请求伪装成为普通浏览器的请求可以有效的防止被目标网站封掉,伪装请求主要是设置请求request的头部。头部信息通过chrome可查看,如下图: 
设置头部的语句如下: headers = {'User-Agent':'XXXXX', 'Referer':'XXXXX'} response = requests.get(url=url, headers=headers)
6.延迟爬取
为了减轻目标网页的访问压力,进而防止被目标网站封掉,一般需要限制爬取频率,限制爬取频率可以使用time.sleep(x)来控制爬虫爬取速度,x的取值一般为2或3即可。
SOL区块链破解生成代币 破解合约绕过区块链制定新的规则合约代币 #区块链破解 #代币生成 需要做的人可以来联系:@Perlah544