由于对某款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
SOCKS服务器。socks5代理,采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。 Socks是个电路级的底层网关,是DavidKoblas在1990年开发的,此后就一直作为Internet RFC标准的开放标准。 Socks 不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、 HTTP 层代理不同,Socks 代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。 所以,Socks代理比其他应用层代理要快得多。iOS是由苹果公司开发的移动操作系统。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等产品上。下面是我收集整理的ios开发用Charles进行抓包的方法,欢迎阅读。
ios开发用Charles进行抓包的方法首先,我们可以去一些网站下载安装一下这个软件。安装完毕后, 我们能看到这个漂亮的青花瓷。
现在,我们需要将我们的电脑配置成手机的.代理服务器,这样才能让我们的 MAC 顺利的拦截到手机软件的网络接口。我们先看一下自己的电脑ip。
在系统偏好设置 -->网络 -->查看当前 IP。
然后我们来配置一下手机网络设置,前提是你要确保你的手机和你的电脑在同一个局域网中。打开手机无线网的配置。就是点击这个图标。
接着,我们就看到配置页面啦,找到到代理这个栏目,选择“手动”,在服务器一项,填写刚才查看的电脑的ip,这里就是10.930.93.115,端口添加8888,然后返回就行了。
接着,我们在电脑上打开 Charles。然后配置一下,主要是配置端口,按照图示点击。
然后,在弹出框中找到端口,输入8888,和你手机输入的端口号保持一致。
到这里,配置就完成了。现在你可以打开你的手机进行上网,这是会看到Charles 在刷刷的显示数据,并在右侧面板中以黄色字体显示出来。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)