由于对某款app的租房信息的筛选条件不满意,所以爬取了它的api以便能够根据自己的需求进行筛选。根据自己的初级爬虫经验,为了防止app封禁我的ip,所以准备通过代理服务器去访问。
过程是相当纠结啊,尝试的太多,这里就只放结论了。
笔者使用的 URLSession ,初始化前配置 URLSessionConfiguration 对象的 connectionProxyDictionary 即可。
特别提醒: host 类型为 String , 而 port 类型为 Int .
ps:使用http时,需要添加ATS白名单
注: 两种代理方式貌似不能同时使用。不确定是因为我测试时上一秒代理还好好的,下一秒就挂了。
一般服务器对于爬虫是不欢迎的。真正的用户操作再快都需要一定的时间,而爬虫访问时间很短,因此相当规模的爬虫对服务器造成的负担就更大。所以服务器会对爬虫做检测,如果被抓到则可能被封掉ip或像本例一样返回其他网站。
针对检测,我们的做法就是要伪装成真正的用户。以笔者目前的理解有两点:
1. 修改请求头。通过Charles抓包可以看到一次请求的头部信息,对照修改
2. 设定访问延时。手速再快你也快不过自动运行的程序吧。
参考链接:
https://blog.csdn.net/c406495762/article/details/60137956
ps: 一个不错的爬虫学习系列
过程中遇到最多的就是1200错误码:无法与服务器建立安全连接。网上大多数意见是服务器SSL版本不够,因为iOS最低要求使用TLSv1.2的版本。对于更低一点的,就需要特别指定版本。( 由于我这里是代理字典https key用错了,才导致的1200。所以只能先在这mark一下 )
以下是网上给出的解决方法:
这是一个测试TLS的控制台命令:
nscurl --ats-diagnostics --verbose https://xxxxxxxxx
这里能自动测试哪种key能通过,随便找个https的网站试一下吧。
附上 connectionProxyDictionary keys 参见 Table 3-7
https://developer.apple.com/library/content/documentation/Networking/Conceptual/SystemConfigFrameworks/SC_UnderstandSchema/SC_UnderstandSchema.html
在主屏幕中按系统设置,进入系统设置屏幕。在系统设置屏幕中找到并点浏览器设置,进入WAP功能设置屏幕,点代理服务器1(或代理服务器2,代理服务器3),进入相应设置屏幕可以分别设置代理服务器。
分别点各项资料的输入栏,进入相应的数字输入屏幕,输入资料(中国移动网关IP:010.000.000.172端口号9201,接入号码是172),正确输入所有资料后,按确定,回到浏览器设置屏幕,再点数据呼叫信息。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)