iOS开发 为app配置代理

如题所述

第1个回答  2022-06-27

由于对某款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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网