n2n内网穿透神器--可以用于设置rac搭建时的网卡(在云平台上有用)_p2p vp-程序员宅基地

技术标签: 11  er  fdsg  53  1220xs  

 

用N2N搭建简单的VPN

 

1.     概述

N2N 是一款开源的P2P VPN 软件,其作者是著名的开源网管软件ntop的作者Luca Deri。

N2N 是一个双层架构的VPN ,它让用户可以在网络层上开发P2P应用的典型功能,而不是在应用层上开发。这意味着用户可以获取本地IP一样的可见度(比如说,同一个n2n网络内的两台PC机可以相互ping通),并且可以通过n2n虚拟网内的IP地址相互访问,而不必关心当前所属的物理网络地址。可以这样说,OpenVPN是把SSL从应用层转移到网络层实现(比如说实现https协议),而n2n则是把P2P的实现从应用层转移到网络层。

 

2.         N2N 设计的主要功能

l          N2N 是基于P2P 协议之上的两个私有网络间的加密层

l          加密是在edge 节点上执行的,使用开放的协议,用户自己定义密钥:你自己控制自己的安全,不需要委托给第三方公司

l          每个n2n 用户可以同时隶属于多个网络

l          有NAT和穿越防火墙的功能,即使n2n节点位于私网中,也能够访问,防火墙不再是在 IP 层的直接沟通和交流的障碍

l          N2N 网络不是独立的,它是能够跨越N2N 和非N2N网络路由的

3.   N2N 架构组件

l          Edge 节点:用户PC 机上安装的用于建立n2n网络的软件。几乎每个edge节点都会建立一个tun/tap设备,作为接入n2n网络的入口。

l          Supernode 超级节点:它在edge 节点间建立握手,或为位于防火墙之后的节点中转数据。它的基础作用是注册节点的网络路径,并为不能直通的节点做路由,能够直通的节点间通信,是P2P的。

 

Edge 节点间通过虚拟的tap 网卡交互。每个tap网卡都是一个n2n edge节点。每台PC机可以有多个tap网卡,所以,在n2n网络中,同一台PC机可以属于多个网络。

 

4.         N2N 网络构架图

 

 

 

 

其中super node 提供场所,让两个位于NAT/防火墙之后的edge node进行会面,一旦双方完成首次握手,剩下的数据流就之发生在两个edge node之间,如果有一方的NAT属于对称型(symmetrical),super node则还需继续为双方提供数据包的转发;edge node负责数据流的加解密,原理很简单。

 

对于一个VPN 而言,主要涉及封装和加解密两个步骤,edge node使用UDP协议进行封装,目的是为了更好的兼容防火墙的策略,因为很多防火墙禁用了非TCP/UDP协议禁用。加密算法则采用了twofish,开源、简便,处理速度快。

 

3.安装N2N软件

  #将N2N软件上传到阿里云服务器

#在两个节点都要安装N2N
unzip n2n-master.zip 
cd  n2n-master
make #如果make 提示openssl出错,安装openssl(命令: yum install -y openssl openssl-devel)
make PREFIX=/opt/n2n install
安装完毕后启动supernode服务(N2N支持两个supernode,我这里只在节点1上面开启supernode)
nohup /opt/n2n/sbin/supernode -l 65530 & #用其中一个节点来当N2N的supernode,我用的节点1,
节点1
/opt/n2n/sbin/edge -d edge0 -a 10.10.10.101 -s 255.255.255.0 -c dtstack -k dtstack -l 172.18.56.21:65530 -E -r
#这里的172.18.56.21是我ECS服务器的eth0接口IP,也就是supernode的真实IP,如果你起了两个supernode可以直接在-l参数里面添加第二个节点,如-l 172.18.56.21:65530,172.18.56.22:65530
/opt/n2n/sbin/edge -d edge1 -a 192.168.100.101 -s 255.255.255.0 -c dtstack -k dtstack -l 172.18.56.21:65530 -E -r
#配置完成以后节点会多两个虚拟网卡
[root@rac1 n2n-master]# ifconfig
edge0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1400
inet 10.10.10.101  netmask 255.255.255.0  broadcast 10.10.10.255
ether 4e:c7:9c:a7:73:95  txqueuelen 1000  (Ethernet)
RX packets 0  bytes 0 (0.0 B)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 0  bytes 0 (0.0 B)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
edge1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1400
inet 192.168.100.101  netmask 255.255.255.0  broadcast 192.168.100.255
ether 46:76:79:d8:1b:eb  txqueuelen 1000  (Ethernet)
RX packets 0  bytes 0 (0.0 B)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 0  bytes 0 (0.0 B)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 172.18.56.21  netmask 255.255.240.0  broadcast 172.18.63.255
ether 00:16:3e:08:48:66  txqueuelen 1000  (Ethernet)
RX packets 19861  bytes 24810887 (23.6 MiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 6122  bytes 2000836 (1.9 MiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
节点2
/opt/n2n/sbin/edge -d edge0 -a 10.10.10.102 -s 255.255.255.0 -c dtstack -k dtstack -l 172.18.56.21:65530 -E -r
/opt/n2n/sbin/edge -d edge1 -a 192.168.100.102 -s 255.255.255.0 -c dtstack -k dtstack -l 172.18.56.21:65530 -E -r

supernode则是服务器超级节点,用法也是很简单的,首先看看edge的help:

  1. edge -d  < tun  device >  -a  < tun  IP address >  -c  < community >  -k  < encrypt  key >  -s  < netmask >  [-u  < uid >  -g  < gid > ][-f][-m  < MAC  address > ]  

  2. -l  < supernode  host:port >  [-p  < local  port > ] [-M  < mtu > ] [-t] [-r] [-v] [-b] [-h]  

  3.   

  4. -d  < tun  device >           | tun device name  

  5. -a  < tun  IP address >       | n2n IP address  

  6. -c  < community >            | n2n community name  

  7. -k  < encrypt  key >          | Encryption key (ASCII) - also  N2N_KEY = < encrypt  key >   

  8. -s  < netmask >              | Edge interface netmask in dotted decimal notation (255.255.255.0)  

  9. -l  < supernode  host:port >  | Supernode IP:port  

  10. -b                       | Periodically resolve supernode IP  

  11.                          | (when supernodes are running on dynamic IPs)  

  12. -p  < local  port >           | Local port used for connecting to supernode  

  13. -u  < UID >                  | User ID (numeric) to use when privileges are dropped  

  14. -g  < GID >                  | Group ID (numeric) to use when privileges are dropped  

  15. -f                       | Fork and run as a daemon. Use syslog.  

  16. -m  < MAC  address >          | Choose a MAC address for the TAP interface  

  17.                          | eg. -m 01:02:03:04:05:06  

  18. -M  < mtu >                  | Specify n2n MTU (default 1400)  

  19. -t                       | Use http tunneling (experimental)  

  20. -r                       | Enable packet forwarding through n2n community  

  21. -v                       | Verbose  

具体上面已经介绍的很清楚了,现在实战怎么开启,一句话:

[html]   view plain copy

  1. sudo edge -d edge0 -a xx.xx.xx.xx -c username -u 1000 -g 1000 -M 1200 -k password -l xx.xx.xx.xx:xxxx -m 41:03:05:00:10:01  >  /dev/null &  

现在简单介绍下上面这条命令的含义, -d edge0 就是创建一个虚拟的网卡设备,edge0就是它的名称, -c -k 就是用户名和密码, -a 虚拟的IP地址,随便取,只要你的所有设备在一个网段即可,然后  -u -g 这个是设置UID和GID 也可以不设置, -m  虚拟mac地址,设置了有好处,只要不相同即可,不设置回随机分配,最后有一个重要的地方, -M 1200 ,这里是设置MTU,至于MTU是什么,可以自行百度哈,没设置之前,ssh,http等协议会卡住死活连不上,设置后就正常了,需要比1400小,安卓上不用设置,这样设置以后就可以ping通你的其他机器了,只要它可以访问到超级节点  -l  xx.xx.xx.xx:xxxx

现在介绍 supernode ,这个是创建超级节点,root权限都不需要,直接 supernode -l 端口号 ,就行了。网上有免费的超级节点,不过都很慢,很卡,很蛋疼,建议自己买个阿里的vps,又便宜,100M宽带一个月32块钱,那速度,只有一个字,飞快,视频在线传输都没问题,我上班都可以通过n2n查看家里的摄像头...

 

 

“ -d< 接口名 > ”选项指定了由 edge 命令创建的 TAP 接口的名字。

“ -a<IP 地址 > ”选项(静态地)指定了分配给 TAP 接口的 VPN 的 IP 地址。如果你想要使用 DHCP ,你需要在其中一台边缘节点上配置一台 DHCP 服务器,然后使用“ -a dhcp:0.0.0.0 ”选项来代替。

“ -c< 组名 > ”选项指定了 VPN 组的名字(最大长度为 16 个字节)。这个选项可以被用来在同样一组节点中创建多个 VPN 。

“ -u ”和“ -g ”选项被用来在创建一个 TAP 接口后降权放弃 root 权限。 edge 守护进程将会作为指定的用户 / 组 ID 运行。

“ -k< 密钥 > ”选项指定了一个由 twofish 加密的密钥来使用。如果你想要将密钥从命令行中隐藏,你可以使用 N2N_KEY 环境变量。

“ -l<IP 地址 : 端口 > ”选项指定了超级节点的监听 IP 地址和端口号。为了冗余,你可以指定最多两个不同的超级节点(比如 -l < 超级节点 A> -l < 超级节点 B> )。

“ -m ”给 TAP 接口分配了一个静态的 MAC 地址。不使用这个参数的话, edge 命令将会随机生成一个 MAC 地址。事实上,为一个 VPN 接口强制指定一个静态的 MAC 地址是被强烈推荐的做法。否则,比如当你在一个节点上重启了 edge 守护程序的时候,其它节点的 ARP 缓存将会由于新生成的 MAC 地址而遭到污染,它们将不能向这个节点发送数据,直到被污染的 ARP 记录被消除。

在使用过程中不免遇到一些奇葩的事,调试是个关键,开启调试模式,可以使用参数 “ -v -f ”。记住先 kill 掉之前的 edge 或 supernode 进程再进行调试以免冲突。


 

 

好了,linux下面的就这样,客户端就是那一句话,很方便,开机自动连接,超级节点自己搭建一个,其他机器都可以用这个节点。

 

调试

使用过程中不免遇到一些奇葩的事,调试是个关键,一些大的坑已经为你们踩过了,剩下的基本没啥问题。

1.开启调试模式

记住先kill掉之前的edge 或 supernode进程再进行调试以免冲突。

附加参数即可: -v -f

edge


edge -a 10.0.0.11 -c edge0 -k wss -l 150.0.0.1:5000 -v -f

supernode


supernode -l 5000 -v -f


 

 

Windows:

下面介绍win下面怎么搭建n2n:win下面其实也很简单,下个软件设置下就OK了

地址是 http://www.vpnhosting.cz/n2nguien.exe 提供了一个安装包,里面包含了V1 和V2版本,请选择V1版本

 

单击 advanced 按键,勾选Enable packet forwarding through n2n community,然后其他的自己看,和Linux下的设置一样

 

上面的图借鉴网上的,因为我没在windows下,但是我用的和这个图一样,这里选择V1版本。

把桌面图标拖到菜单启动就可以开机启动了,不要担心,不占内存不占cpu不占网速.....

 

 

常见问题

无法连接服务器时会重复提示 WARNING:Supernode not responding – moving to 0 of 1

成功连接 Rx REGISTER_SUPER_ACK myMAC=

常见问题解决方法

1.无法ping通

如果出现一方可以ping通,另一方无法ping通,则很有可能为对方开启了防火墙,关闭防火墙即可

2.无法连接到服务器

检查客户端填写的服务器端口是否正确

检查服务器端口是否在iptables等防火墙中放行

检查客户端是否以管理员权限运行

3. 客户端不断重复ERROR等信息

若能正常联机,则可以忽略错误提示


 

 

怎么知道自己的N2N处于正常工作状态呢?

针对 N2N_V1,进入 状态 -- 系统日志,如果能看到这样开头的信息,每分钟一条,就算与服务器连接好啦!

 

Received REGISTER_ACK from remote peer ... ...

没有连接成功可能显示的是这样的信息(反正不是上面的信息,就没有成功)

 

 

Registering with supernode

 

对于 N2N_V2,同样的路径下,看到的是这样的开头,每2分钟一次,也算设置完全正确啦:

 

Rx REGISTER_SUPER_ACK myMAC= ... ...

没有连接成功可能显示的信息

 

WARNING:Supernode not responding - moving to 0 of 1

 


 

Android:

下面该介绍安卓了:安卓和win一样,百度上面搜n2n安卓客户端,然后下载安装,注意,需要root权限

下载地址:

[html]   view plain copy

  1. http://download.csdn.net/detail/leekwen/8604177  

设置好了点击start,出现 RX什么ACK 就表示连通了,可以用超级终端ping通,或者ssh连接



其实安卓上有arm linux,不过不好打字,我现在也没怎么用,在arm linux里面你可以下载更新和pc一样,还可以vnc进桌面。

好了,安卓版就说到这里了。

 

OpenWrt:

下面介绍OpenWrt的n2n配置,这些都是 很有价值 的,具体价值自己去想

首先安装n2n,可以编译的时候编译进去。 make menuconfig 里面找到 network->vpn->n2n 选中即可,或者编辑.config,搜n2n改成=y

或者在板子里面 opkg update && opkg install n2n 即可

下面看看n2n的配置文件:

[html]   view plain copy

  1. config edge                                                                                                                                

  2.     option community 'username'                                                                                                               

  3.     option key 'password'                                                                                                                     

  4.     option port 'port'                                                                                                                                                                                                                                       

  5.     option supernode 'xx.xx.xx.xx'                                                                                                     

  6.     option ipaddr 'xx.xx.xx.xx'                                                                                                            

  7.     option route '1'   


好,现在分析一下配置文件, community 就是用户名, key 就是密码对应edge命令的-c -k, supernode 是超级节点的ip地址, port 是端口,对应edge的-l,然后 ipaddr 是虚拟ip地址,对应-a, route 对应-r参数,就是设置是否通过n2n转发,然后我们来看看openwrt下面n2n的服务程序:

[html]   view plain copy

  1. start_instance() {  

  2.         local  cfg = "$1"   

  3.   

  4.         config_get type "$cfg" TYPE  

  5.   

  6.         case "$type" in  

  7.           edge)  

  8.                 config_get ipaddr "$cfg" 'ipaddr'  

  9.                 [ -n "$ipaddr" ] || return 1  

  10.                 config_get supernode "$cfg" 'supernode'  

  11.                 config_get port "$cfg" 'port'  

  12.                 config_get community "$cfg" 'community'  

  13.                 config_get key "$cfg" 'key'  

  14.                 config_get_bool route "$cfg" 'route' '0'  

  15.                 [ "$route" = "1" ] &&  args = '-r'   

  16.                 service_start /usr/sbin/edge -f $args -a $ipaddr -c $community -k $key -l ${supernode}:${port}  

  17.                 ;;  

  18.           supernode)  

  19.                 config_get port "$cfg" port  

  20.                 [ -n "$port" ] || return 1  

  21.                 service_start /usr/sbin/supernode -l $port  

  22.                 ;;  

  23.         esac  

  24. }  

上面是启动的主要函数:首先是读取config 这个type,判断是edge还是supernode如果是supernode则只读取port ,运行命令 supernode -l port,如果type是edge,则读取....等配置文件,然后

[html]   view plain copy

  1. edge -f $args -a $ipaddr -c $community -k $key -l ${supernode}:${port}  

上面的 -f是作为一个服务启动,写入syslog

好了这样配置好了就可以访问到路由器的,只要路由器连了外网,就可以随时访问进去

 :  经过长期使用,发现一个不美好的问题,如果 长时间 运行的话,会导致不间断 不通不稳定 的情况,所以建议每天自动 重启 一下edge程序

n2n的介绍到此 结束 ,很好很强大的一个功能,基本上人手必备神器, 小巧,开源,迅速,免费,无限穿透!

 

 

 



About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub( http://blog.itpub.net/26736162 )、博客园( http://www.cnblogs.com/lhrbest )和个人weixin公众号( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 (满) 、618766405

● weixin群:可加我weixin,我拉大家进群,非诚勿扰

● 联系我请加QQ好友 ( 646634621 ) ,注明添加缘由

● 于 2018-09-01 06:00 ~ 2018-09-31 24:00 在魔都完成

● 最新修改时间:2018-09-01 06:00 ~ 2018-09-31 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

●  小麦苗的微店 : https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

●  小麦苗出版的数据库类丛书 : http://blog.itpub.net/26736162/viewspace-2142121/

●  小麦苗OCP、OCM、高可用网络班 : http://blog.itpub.net/26736162/viewspace-2148098/

●  小麦苗腾讯课堂主页 : https://lhr.ke.qq.com/

........................................................................................................................

使用 weixin客户端 扫描下面的二维码来关注小麦苗的weixin公众号( xiaomaimiaolhr )及QQ群(DBA宝典)、添加小麦苗weixin,学习最实用的数据库技术。

 

........................................................................................................................

   

 

 

 


 

 

 

 

 

 

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2215010/,如需转载,请注明出处,否则将追究法律责任。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cpongo1/article/details/88791217

智能推荐

《ActBERT》百度&悉尼科技大学提出ActBERT,学习全局局部视频文本表示,在五个视频-文本任务中有效!...-程序员宅基地

文章浏览阅读155次。关注公众号,发现CV技术之美本文分享论文『ActBERT: Learning Global-Local Video-Text Representations』,百度&悉尼科技大学提出《ActBERT》,学习全局局部视频文本表示,在五个视频-文本任务中有效!详细信息如下:论文链接:https://arxiv.org/abs/2011.07231 01..._actbert

smartivr 5.0 接口说明 (智能电话机器人话术开发接口)_ivr流程中接口有哪些-程序员宅基地

文章浏览阅读478次。FreeSWITCH 电话机器人 smartivr 接口文档_ivr流程中接口有哪些

AAAI 2024 | 腾讯优图实验室27篇论文入选,含表格结构识别、异常图像生成、医学图像分割等研究方向...-程序员宅基地

文章浏览阅读289次。关注公众号,发现CV技术之美AAAI 2024 (AAAI Conference on Artificial Intelligence)人工智能国际会议于近日公布论文录用结果,本届会议共收到9862篇份论文投稿,最终录用2342篇论文,录用率23.75%。AAAI 是美国人工智能协会主办的年会,同时也是人工智能领域中历史最悠久、涵盖内容最广泛的的国际顶级学术会议之一。今年,腾讯优图实验室共有27..._腾讯优图实验室

神经网络在电商中的应用,神搜电商科技_电商投流 神经网路-程序员宅基地

文章浏览阅读1.3k次。根据《电子商务概论》(李琪 主编,高等教育出版社,2004年9月)第6章(电子商务链分析)中的相关内容,“商务链与交易链是将商务和交易活动进行联系与划分,并使之有序化的逻辑链条,它们高度抽象地将商务/交易活动表现为不同的节点,每个节点分别代表一定的经济事务,通过将这些节点有效地串连起来,共同形成了一个商务链或交易链。电子商务链是用来描述电子商务的交易(商务)流程的综合框架,这一分析框架从商务活动的基本过程对电子商务进行研究,揭示了电子商务的一般框架,并对电子商务链中的主要环节提供了指导性的分析方法。_电商投流 神经网路

Dubbo性能优化_dubbo接口发送1m数据需要多久-程序员宅基地

文章浏览阅读995次。https://my.oschina.net/u/1378920/blog/739399Dubbo性能优化背景dubbo作为一款分布式服务框架,除了提供远程调用的细节封装,还提供了基本的服务治理功能,能够粗略地监控系统性能。上图展示的是dubbo执行流程的原理图,在客户端和服务端都有一个程序去统计调用信息,其中有价值的信息有延迟时间、并发数、调用次数等,完成记录_dubbo接口发送1m数据需要多久

集群时钟同步问题_grid中集群时间同步问题-程序员宅基地

文章浏览阅读82次。问题举⼀个例⼦,电商⽹站业务中,新增⼀条订单,那么势必会在订单表中增加了⼀条记录,该条记录中应该会有“下单时间”这样的字段,往往我们会在程序中获取当前系统时间插⼊到数据库或者直接从数据库服务器获取时间。那我们的订单⼦系统是集群化部署,或者我们的数据库也是分库分表的集群化部署,然⽽他们的系统时钟缺不⼀致,⽐如有⼀台服务器的时间是昨天,那么这个时候下单时间就成了昨天,那我们的数据将会混乱!集群时钟同步配置集群时钟同步思路:分布式集群中各个服务器节点都可以连接互联⽹操作⽅式:#使⽤ ntpdat_grid中集群时间同步问题

随便推点

【BLDC理论篇】无刷直流电机与永磁同步电机比较_为什么bldc转矩波动大-程序员宅基地

文章浏览阅读1.6w次,点赞23次,收藏111次。现代电机与控制技术以电流驱动模式的不同将永磁无刷直流电动机分为两大类:1)方波驱动电机,也即无刷直流电机(BLDC);2)正弦波驱动电机:也即永磁同步电机(PMSM)。 表面来看,BLDC和PMSM的基本结构是相同的:1)它们的电动机都是永磁电动机,转子由永磁体组成基本结构,定子安放有多相交流绕组;2)都是由永久磁铁转子和定子的交流电流相互作用产生电机的转矩;3)在绕组中的..._为什么bldc转矩波动大

深入理解jvm-java内存模型(结合volatile)_volatile jvm-程序员宅基地

文章浏览阅读413次。1. 结构所有的变量存储在主内存每条线程都有自己的工作内存线程的工作内存保存了该线程所使用变量的主内存副本线程对变量的所有操作必须在工作内存中进行,不得直接操作主内存线程间变量的传递必须由主内存来交互完成2.内存间交互原子操作·lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态。·unlock(解锁):作用于主内存的变量,它把一个处于锁定状态的变量释..._volatile jvm

蔡司全球新品发布会暨新品技术分享会上线-程序员宅基地

文章浏览阅读268次。顺应今年特殊环境下企业的迫切需求,蔡司通过线上发布形式,突破目前线下交流所受到的约束,以数字化方式迎接“新常态”,让用户能够同以往一样及时、便捷地了解蔡司最新创新方案。10月20日,蔡司..._蔡司秋季发布会

实时显示iOS编写UI代码效果_[self.reloadbutton mas_makeconstraints:^(masconstr-程序员宅基地

文章浏览阅读564次。实时显示iOS编写UI代码效果分类: iOS 2015-05-08 18:48 255人阅读 评论(0)收藏 举报IOS实时显示UI目录(?)[+]编写iOS应用UI的方式大概有两种,一种是Storyboard/Xib,另一种是手写代码。采用Storyboard/Xib方式组织UI,由于提供可视化的特性,只要从UI库中拖动UI控件,便可以_[self.reloadbutton mas_makeconstraints:^(masconstraintmaker *make) {

python爬虫运行的整体流程_Python 网络爬虫程序架构及运行流程-程序员宅基地

文章浏览阅读460次。1 前言Python开发网络爬虫获取网页数据的基本流程为:发起请求通过URL向服务器发起request请求,请求可以包含额外的header信息。获取响应内容服务器正常响应,将会收到一个response,即为所请求的网页内容,或许包含HTML,Json字符串或者二进制的数据(视频、图片)等。解析内容如果是HTML代码,则可以使用网页解析器进行解析,如果是Json数据,则可以转换成Json对象进行解析..._python正在爬数据的时候可以运行程序吗

平衡二叉树详解及C++实现_c++ 二叉搜索树平衡二叉树-程序员宅基地

文章浏览阅读583次,点赞2次,收藏7次。平衡二叉搜索树_c++ 二叉搜索树平衡二叉树

推荐文章

热门文章

相关标签