nodejs创建一个http服务器来接收上传的文件
时间有限。自己看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var connect = require('connect')
var http = require('http')
var app = connect()
var multipart = require('connect-multiparty');
// parse urlencoded request bodies into reqbody
var bodyParser = require('body-parser')
appuse(bodyParserurlencoded())
appuse(multipart())
// respond to all requests
apppost('/upload', function(req, resp) {
consolelog(reqbody, reqfiles);
// don't forget to delete all reqfiles when done
});
//create node<a href="https://wwwbaiducom/swd=js&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PAuWP1T4rH9-nyRzPADk0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1DvrH0YPWmsrjRdnWR3Pjn4rj6" target="_blank" class="baidu-highlight">js</a> http server and listen on port
httpcreateServer(app)listen(3000)
参考 : https://githubcom/senchalabs/connect
DMZ主机是完全将内网的一台计算机暴露给外网。
端口映射的只是将内网计算机的某个端口开放给外网去访问
所以,你的这个情况,用端口映射完全可以
设置如下:
内网计算机IP 19216812
无线路由器 19216811
开放WEB端口80,FTP端口21
设置--端口映射
端口80
协议TCP
IP地址 19216812
非常简单,现在的路由器都是超级简单的。
自己搭建高质量亿级IP的HTTP/Socks5隧道代理
一、前言
在做爬虫、数据采集、账号搜索项目时,需要用到高质量代理IP。目前比较流行也是最常见的代理IP服务,大部分是通过api链接提取。通过不断的访问api接口,api服务器返回一个或多个可用代理IP,然后将代理IP应用于自己的程序或软件中。api服务器维护了一个可用IP池,并且不断在更新加入新的可用IP。客户端访问时,则返回最新可用IP。
API提取方式简单实现,但也有一定弊端,主要是客户端需要不断的访问api接口获取最新代理,需要一直循环。根据代理质量的不同,获取到的代理不一定全部可用,影响了爬虫的效率。这里推荐 酷鱼代理IP(https://kuyukuyucom),有动态代理和私密代理,速度和可用率都比较好。
那么,有没有不需要api的代理方式呢,那我们来看看隧道代理。
二、隧道代理是什么
隧道代理只需设置固定接口,云端自动切换不同IP,省去了客户端频繁获取的麻烦。并且通过隧道代理的多路负载技术,大大提高的代理速度和可用率。隧道代理没有一次提取多少个IP的概念,主要是通过对不同客户的并发请求数进行限制。一般可达到50-100次/秒的并发请求。
三、隧道代理架构
如上图,隧道代理工作步骤为:
代理使用者向隧道代理服务器发出请求。例如酷鱼隧道代理地址为:tunnelkuyukuyucom。
隧道代理服务器收到代理使用者请求后,会选择最优线路进行转发,在代理使用者和动态代理节点之间建立隧道连接。
动态代理服务器请求代理使用者指定的目标站。
动态代理服务器将目标站返回的结果,直接返回给代理使用者。
四、获取代理IP池
隧道代理有多个可用路径进行转发,采用多路复用、择优选择技术,提高代理成功率。经测试成功率可达99%以上。
代理服务器返回结果时没有经过隧道代理,而是直接返回给代理使用者。因为隧道代理仅起到建立隧道连接的作用,并不参与数据传输。保障了代理执行效率。
使用方便,需要频繁切换代理。
支持高并发,多客户端同时使用。
五、实现步骤
首先需要找到一个可持续供给的代理IP池,代理IP最好是同时支持HTTP(s)和Socks5协议的,这样我们的隧道代理也可以支持socks5。这里推荐酷鱼私密代理 https://kuyukuyucom/mains/secret ,可用率99%以上,速度快。
购买后在用户中心获取API提取链接,然后设置白名单和提取数量。
将获取到的代理写入Squid配置文件。/etc/squid/squidconf
重载配置文件,使用配置生效。
每隔1秒重复一次,并不断循环。
六、Squid使用方法
将squid 做为代理服务器
备份源文件 cp /etc/squid/squidconf /etc/squid/squidconfsource,用于脚本自动更新
在squid所在服务器运行脚本。
七、进一步优化
由于squid只支持http(s),不支持socks5协议,所有就算购买的代理池支持socks5,隧道代理也不支持。如需支持socks5,只需要使用其他软件替代squid。如果有这方面的需要可以联系酷鱼代理客服。
可以在隧道代理上使用iptables进行限制访问,达到白名单功能。
iptables还可以对单个客户端请求数量或流量限制,达到限流功能。
文章来源:网页链接
首先,标准HTTP协议对上传文件等表单的定义在这里:wwwietforg/rfc/rfc1867txt 大概数据包格式如下:
单文件:
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="field1"
Joe Blow
--AaB03x
content-disposition: form-data; name="pics"; filename="file1txt"
Content-Type: text/plain
contents of file1txt
--AaB03x--
多文件:
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="field1"
Joe Blow
--AaB03x
content-disposition: form-data; name="pics"
Content-type: multipart/mixed, boundary=BbC04y
--BbC04y
Content-disposition: attachment; filename="file1txt"
其次,python上传文件的几种方法:
1 自己封装HTTP的POST数据包:http//stackoverflowcom/questions/680305/using-multipartposthandler-to-post-form-data-with-python
import httplibimport mimetypesdef post_multipart(host, selector, fields, files): content_type, body = encode_multipart_formdata(fields, files) h = httplibHTTP(host) hputrequest('POST', selector) hputheader('content-type', content_type) hputheader('content-length', str(len(body))) hendheaders() hsend(body) errcode, errmsg, headers = hgetreply() return hfileread() def encode_multipart_formdata(fields, files): LIMIT = '----------lImIt_of_THE_fIle_eW_$' CRLF = '\r\n' L = [] for (key, value) in fields: Lappend('--' + LIMIT) Lappend('Content-Disposition: form-data; name="%s"' % key) Lappend('') Lappend(value) for (key, filename, value) in files:
第1步:安装一个服务我这装的是oneInstack
第2步:先在阿里云添加一个安全组50
第3步:ssh:在oneinstack 执行/vhostsh 这是添加虚拟机
第4步:在/usr/local/nginx/conf/vhost目录下 修改端口
第5步:web 服务开启 端口 iptables -A INPUT -p tcp --dport 50 -j ACCEPT
第6步:ssh:执行service nginx restart 重启服务
第7步:在/data/wwwroot/ip地址:50 放自己页面文件
完了,你可以在服务器ip后面加50就可以访问了,你还可以类似开启30,40,60之类的端口
nginx部署
1在下载的ngnix的工具中执行下面命令:
start /nginxexe回车即启动了nginx服务
2检查是否成功
输入http://localhost 会有Welcome to nginx!
3nginx配置
找到nginx下的conf/nginxconf文件,设置代理相关信息,重点是server{}中的内容
server {
listen 80;
server_name testcom;
# 这里是你要代理的测试环境域名加上-local
# 比如你的项目测试环境为testcom,你本地此处可以设置为testcom,当然你可以随便设置
location /{
add_header 'Access-Control-Allow-Origin' '';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
# 此处8091是我们本地运行项目的端口号,设置成跟你本地起的服务端口号一样就行
proxy_pass http://127001:8091/;
}
}
登录后复制

4本机dns配置
修改本地host文件配置
找到目录C:\Windows\System32\drivers\etc,打开hosts文件,修改文件,加入127001 testcom
然后在testcom 可以看到Welcome to nginx!
5运行
先输入/nginxexe -t检查nginx配置是否正确
继续输入nginx -s reload重启(nginx配置文件修改后都要重启nginx才会生效)
刷新dns: ipconfig /flushdns
ngnix设置一个服务
root就是文件的 地址 localhost:8000/文件名后缀 就是页面地址
server {
listen 8000;
# listen somename:8080;
# server_name somename alias anotheralias;
location / {
root "E:\华侨城\西安欢乐谷\聚合-集成小程序\src\pages\index";
index indexhtml indexhtm;
}
}
登录后复制

本地通过http-server启动服务
npm install http-server -g
http-server -p 8881
页面输入127001:8881 然后写入页面aaahtml 就可以访问了
登录后复制
重启redis
1cmd打开redis目录:
redis-serverexe rediswindowsconf
每次重启 是不是很麻烦,自动启动的方法:
1在redis目录启动redis: redis-serverexe rediswindowsconf
2在redis设置用户名密码:
redis-cliexe
然后输入 set name wangjigen 设置自己的名字 getname 看看自己是否设置成功
config set requirepass wjg720941设置密码 auth 需要输入自己的密码
config get requirepass 查看自己的用户名密码
3设置服务命令
redis-server --service-install rediswindows-servi` ceconf --loglevel verbose
然后在计算机服务点击可开启
over
然而启动的时候会报错
node_redis: Warning: Redis server does not require a password, but a password was supplied
1可能是这是redis程序没有指向windowconf 文件 redis-serverexe rediswindowsconf
2可能是或者在 rediswindowsconf文件搜索requirepass 添加密码 requirepass asd123
0条评论