Faker之【指定平台】的随机user_agent

正常下载:

pip install Faker

正常使用:

from faker import Faker

f = Faker(locale='zh_CN')
headers={'User-Agent': f.chrome()}

问题:

首先,手机端的ua  和 pc端的ua是有区别的;

如果请求小程序或App,随机到的却是PC端的ua,而且对方做了验证的话,大概率请求失败。

那为什么不能指定入参,来获取特定平台ua呢?

1.定位faker包位置

import faker

print(faker.__path__)

# 输出:['/Users/mk/opt/miniconda3/lib/python3.8/site-packages/faker']

 

2.定位源码

 

3.修改__inint__.py文件

vim /Users/mk/opt/miniconda3/lib/python3.8/site-packages/faker/providers/user_agent/__init__.py

 

4.用下面的代码替换Chrome函数

很简单,就是加了一个 is_pc=True 入参,默认返回PC端ua;

如修改为 is_pc False 参,则返回手机端ua。

def chrome(self, version_from=13, version_to=63, build_from=800, build_to=899, is_pc=True):
    saf = '{}.{}'.format(self.generator.random.randint(531, 536), self.generator.random.randint(0, 2))
    bld = self.lexify(self.numerify('##?###'), string.ascii_uppercase)
    tmplt = '({0}) AppleWebKit/{1} (KHTML, like Gecko) Chrome/{2}.0.{3}.0 Safari/{4}'
    tmplt_ios = '({0}) AppleWebKit/{1} (KHTML, like Gecko) CriOS/{2}.0.{3}.0 Mobile/{4} Safari/{1}'

    if is_pc:
        platforms = (
            tmplt.format(self.linux_platform_token(),
                         saf,
                         self.generator.random.randint(version_from, version_to),
                         self.generator.random.randint(build_from, build_to),
                         saf),
            tmplt.format(self.windows_platform_token(),
                         saf,
                         self.generator.random.randint(version_from, version_to),
                         self.generator.random.randint(build_from, build_to),
                         saf),
            tmplt.format(self.mac_platform_token(),
                         saf,
                         self.generator.random.randint(version_from, version_to),
                         self.generator.random.randint(build_from, build_to),
                         saf),
        )
    else:
        platforms = (
            tmplt.format('Linux; {}'.format(self.android_platform_token()),
                         saf,
                         self.generator.random.randint(version_from, version_to),
                         self.generator.random.randint(build_from, build_to),
                         saf),
            tmplt_ios.format(self.ios_platform_token(),
                             saf,
                             self.generator.random.randint(version_from, version_to),
                             self.generator.random.randint(build_from, build_to),
                             bld),
        )

    return 'Mozilla/5.0 ' + self.random_element(platforms)

 

5.修改后的使用方法

from faker import Faker

f = Faker(locale='zh_CN')

# 返回手机端ua
headers={'User-Agent': f.chrome(is_pc=False)}

# 返回PC端ua
headers={'User-Agent': f.chrome(is_pc=True)}

这样,在保持随机ua的同时,也可以指定平台ua。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值