PHP爬虫通过L2TP VPN进入校园网抓取数据

2018年1月15日 2 条评论 1.43k 次阅读 1 人点赞

一、 前言

学校在前段时间关闭了校外访问,但学校在最近突然开放了VPN给学生连接进入校园网。有了入口,在外网就有可能使用爬虫爬取数据。可以简单修改之前的代码,达到外网查询成绩的效果。

二、初步想法

整理了下现在手头拥有的资源。1台香港Linux虚拟主机,无系统权限。1台阿里云Windows server 2008主机,拥有对系统的完全权限。香港虚拟主机托管着成绩查询网站,因为没有系统的权限,所以无法连接L2TP VPN。初步想法是使用阿里云主机连接上VPN,然后香港主机发送请求到阿里云主机,在阿里云主机抓取数据返回香港主机,最后输出结果到前端进行渲染。

当然,也可以把网站直接放到阿里云主机,不用另外一台主机。

 

三、连接VPN

根据学校提供的VPN账号,在阿里云主机连接上VPN。具体请百度。

连接上VPN后,会有一种问题:PPTP(L2TP) 拨号后,服务器只能访问远端内网,而不能访问外网。如果不能访问外网,那么这个服务器就不能架设给外网访问的网站。这个问题解决方法也很简单。

在CMD执行:

添加路由,*号改为你连接此VPN获取的IP地址。

删除路由的方法:

 

关于保持长连接的小技巧:

VPN会定时清理不活跃的连接,所以需要经常发送数据,俗称心跳包。我的做法就是用ping命令来ping内网有效地址。

*号为内网地址,后面-t参数是定时自动发送ping包。这样可以有效维持一段时间的连接。还需要不时去看看是否断开了。

 

具体设置方法参考:http://service.tp-link.com.cn/detail_article_414.html

 

四、修改网站代码,允许跨域请求

1. 允许跨域请求

将抓取数据的PHP代码放到阿里云服务器。然后在PHP头部加入此句:header("Access-Control-Allow-Origin: *");  允许所有来源的请求。这个中设置方法可能不太安全,建议把星号改成你发送请求的服务器地址。

2. 通过PHP请求另一台服务器的PHP

关键代码:

 

五、其他资源

成绩查询网站源代码:https://github.com/ping-xiong/school-report-card

 

平兄

做任何一件事情,计划和努力应当留给自己看,成果才适合秀给他人看。

文章评论(2)

  • z7

    看这个就猜到了是广西某科技大学,点开一看还真是 :razz:

    2018年1月28日
    • pingxiong

      @z7 是的

      2018年1月29日