linux curl命令来路伪装(referer)和浏览器伪装(user-agent)

一般的知名站点,都有一套比较完善的机器流量检测系统;它通过流量的IP、流量的来源、使用的浏览设备、访问频次、用户行为等综合分析,来判断当前流量是真实的用户流量,还是机器在爬网站的数据,从而做出是否封禁当前流量的决定。第三方统计站点,也是使用此原理来帮助站长统计用户行文的。
  而其中的流量来源、使用的浏览设备、甚至流量的IP都是可以伪造的。本文为介绍curl伪装访问来源、和伪装使用的浏览器的方法。伪装来路IP地址,请参考“linux curl命令使用代理服务器”。
 


一、原理说明:


  浏览器与http服务器是通过http协议通讯的,而http请求头中包含了客户端的一些信息,其中包括:浏览器类型、当前页面的来源页面,cookies等;
  下面我们来看看一个标准的http请求头后响应头:

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

29

30

31

32

33

[root@aiezu.com ~]# curl -v -I --referer http://baidu.com --user-agent 'Chrome/54.0 (Windows NT 10.0)' http://baidu.com/ 

* About to connect() to baidu.com port 80 (#0)

*   Trying 180.149.132.47...

* Connected to baidu.com (180.149.132.47) port 80 (#0)

> HEAD / HTTP/1.1

> User-Agent: Chrome/54.0 (Windows NT 10.0)

> Host: baidu.com

> Accept: */*

> Referer: http://baidu.com

>

< HTTP/1.1 302 Moved Temporarily

HTTP/1.1 302 Moved Temporarily

< Server: bfe/1.0.8.18

Server: bfe/1.0.8.18

< Date: Fri, 02 Dec 2016 03:46:11 GMT

Date: Fri, 02 Dec 2016 03:46:11 GMT

< Content-Type: text/html

Content-Type: text/html

< Content-Length: 161

Content-Length: 161

< Connection: Keep-Alive

Connection: Keep-Alive

< Location: https://www.baidu.com/

Location: https://www.baidu.com/

< Expires: Sat, 03 Dec 2016 03:46:11 GMT

Expires: Sat, 03 Dec 2016 03:46:11 GMT

< Cache-Control: max-age=86400

Cache-Control: max-age=86400

< Cache-Control: private

Cache-Control: private

 

<

* Connection #0 to host baidu.com left intact

  上面输出可以看到,第7行和第9行就是我们设置的浏览器类型字符串和流量来源页面。而httpd服务端接收到了什么呢?我们这里以http服务段使用的是PHP为例,在站点上做一个“test.php”做为测试页面,PHP的Referer、User-Agent存放在$_SERVER变量中,所以我们的“test.php”文件只需要两行代码:
test.php文件:

1

2

<?php

print_r($_SERVER);

测试返回:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

[root@aiezu tmp]# curl --referer http://baidu.com --user-agent 'Chrome/54.0 (Windows NT 10.0)' http://aiezu.com/test.php

Array

(

    [HTTP_USER_AGENT] => Chrome/54.0 (Windows NT 10.0)

    [HTTP_HOST] => aiezu.com

    [HTTP_ACCEPT] => */*

    [HTTP_REFERER] => http://baidu.com

    [PATH] => /sbin:/usr/sbin:/bin:/usr/bin

...

    [REQUEST_METHOD] => GET

...

    [PHP_SELF] => /test.php

    [REQUEST_TIME] => 1480651125

)

 


二、伪装来路(referer):


  什么是来路?从A页面点击进入B页面,那B页面的来路就是A页面的URL。伪装来路十分简单,有两种方法:1、使用上面的“--referer”参数或“-e参数”;2、直接使用“-H”参数设置http头,下面分别介绍两种方法。
1、“-e/--referer”参数方式:

1

2

3

4

5

6

7

# 告诉http服务器,我是从qq.com来的

[root@aiezu.com ~]# curl -e http://qq.com  http://aiezu.com/test.php 2>/dev/null|grep HTTP_REFERER

    [HTTP_REFERER] => http://qq.com

 

# 告诉http服务器,我是从baidu.com搜"aiezu"关键词点进来的

[root@aiezu.com ~]# curl --referer https://www.baidu.com/s?wd=aiezu  http://aiezu.com/test.php 2>/dev/null|grep HTTP_REFERER

    [HTTP_REFERER] => https://www.baidu.com/s?wd=aiezu

 
2、“-H”参数的方式:

1

2

3

# 告诉http服务器,我是从微博过来的

[root@aiezu ~]# curl -H "Referer: http://weibo.com"  http://aiezu.com/test.php 2>/dev/null|grep HTTP_REFERER

    [HTTP_REFERER] => http://weibo.com

 


三、伪装浏览器类型(User-Agent):


  首先,我们先找到浏览器对应的“User-Agent”字符串。可以直接在Chrome中的“开发者工具”的“网络”标签查看http请求头获得;也可以在网上搜索获得,如通过百度搜索“微信useragent”、“ie useragent”、“chrome useragent”等。
  获得对应浏览器的“User-Agent”字符串后,同样可以通过两种方式告诉http服务器我用的浏览器类型:
1、“-A/--user-agent”参数方式:

1

2

3

4

5

6

7

8

9

# 告诉http服务器,我是通过微信内置浏览器访问

[root@aiezu.com ~]# UA='Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12A365 MicroMessenger/6.0 NetType/WIFI';

[root@aiezu.com ~]# curl -A "$UA" http://aiezu.com/test.php|grep HTTP_USER_AGENT

    [HTTP_USER_AGENT] => Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12A365 MicroMessenger/6.0 NetType/WIFI

 

# 告诉http服务器,我是通过Chrome浏览器访问

[root@aiezu.com ~]# UA='Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36';

[root@aiezu.com ~]# curl --user-agent "$UA" http://aiezu.com/test.php|grep HTTP_USER_AGENT

    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36


2、“-H”参数方式:

1

2

3

4

# 告诉网站,我是百度蜘蛛爬取

[root@aiezu.com ~]# UA="Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)";

[root@aiezu.com ~]# curl -H "User-Agent: $UA" http://aiezu.com/a.php|grep HTTP_USER_AGENT

    [HTTP_USER_AGENT] => Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)


四、附录:


参考页面:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值