davidteather/TikTok-Api

[BUG] - 'browser' object has no attribute 'verifyFp'

demalem opened this issue Β· 41 comments

When running the example code from the README:

from TikTokApi import TikTokApi
api = TikTokApi()

results = 10

trending = api.trending(count=results)

for tiktok in trending:
# Prints the text of the tiktok
print(tiktok['desc'])

print(len(trending))

I recieve the below error:

AttributeError: 'browser' object has no attribute 'verifyFp'

I installed chromedriver, but may not have added it to the right path. Can you give guidance in this regards?

Issue-Label Bot is automatically applying the label bug to this issue, with a confidence of 0.94. Please mark this comment with πŸ‘ or πŸ‘Ž to give our bot feedback!

Links: app homepage, dashboard and code for this bot.

Hey @demalem,

We did a quick check and this issue looks very darn similar to

This could be a coincidence, but if any of these issues solves your problem then I did a good job πŸ˜„

If not, the maintainers will get to this issue shortly.

Cheers,
Your Friendly Neighborhood ProBot

What happens when you type the following command into your terminal

chromedriver

'chromedriver' is not recognized as an internal or external command, operable program or batch file.

However, I downloaded chromedriver and included in the path where the script is located. Both in C:\Users\emela.spyder-py3

moved chromerdriver to the parent folder where Anaconda is downloaded and got this result now:

Starting ChromeDriver 85.0.4183.83 (94abc2237ae0c9a4cb5f035431c8adfb94324633-refs/branch-heads/4183@{#1658}) on port 9515 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. [1598556547.109][SEVERE]: bind() returned an error: Only one usage of each socket address (protocol/network address/port) is normally permitted. (0x2740) IPv6 port not available. Exiting...

You should be including the script in the system path not the script path not a specific directory

Same error, I put chromedriver in C:\Users\emela and pointed all my scripts their as well.

Here's an article on how to add to system path

Great thanks, I added it to the PATH variable. Here is a screenshot:
image

Restarted kernel, and same error. I also tried running code from the Chromedriver homepage: https://sites.google.com/a/chromium.org/chromedriver/getting-started and ran into issues as well. I'm assuming I'm not correctly including chromedriver in the PATH or pointing to it accurately.

I have tried all of these resolutions and nothing seems to work. I am not in a country in which TikTok is banned. I have also tried running it with debug mode enabled api = TikTokApi(debug=True) however the issue still occurs. After printing 20 users stats, it gives me the error. It seems as though it gets stuck.

It should print the stats of the last 10 videos for each user that is over 1 million followers, and it does so. However, I get an error after it has printed 20 user's stats.

The error:

Traceback (most recent call last):
  File "snowball.py", line 24, in <module>
    tiktok = api.getUser(accounts)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 723, in getUser
    return self.getData(b, proxy=proxy)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 71, in getData
    query = {'verifyFp': b.verifyFp, 'did': b.did, '_signature': b.signature}
AttributeError: 'browser' object has no attribute 'verifyFp'

my code script (snowball.py)

from TikTokApi import TikTokApi

api = TikTokApi()

# file_data is the list of 150 tiktok users accounts) 

for accounts in file_data:
	tiktok = api.getUser(accounts)
	name = (tiktok['userInfo']['user']['uniqueId'])
	followers = (tiktok['userInfo']['stats']['followerCount'])


	if followers > 1000000:
		user_videos = api.byUsername(name, count=10)

		for video in user_videos:
			stats = (video['stats'])
			print(stats, name)

Also, if it helps, when I type in chromedriver into my macOS terminal... I get this:

Starting ChromeDriver X.X.X.X () on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

My internet connection is rather fast as well.

@edenhikri does #246 solve your issue?

No, unfortunately it does not.

I have tried adding in 'dumpio': True to the launch options. However, the issue still persists.

This may help you as I have seen you request this on other similar issues. When I run:

from pyppeteer.launcher import Launcher
print(' '.join(Launcher().cmd))

I get this:

/Users/edenhikri/Library/Application Support/pyppeteer/local-chromium/588429/chrome-mac/Chromium.app/Contents/MacOS/Chromium --disable-background-networking --disable-background-timer-throttling --disable-breakpad --disable-browser-side-navigation --disable-client-side-phishing-detection --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=site-per-process --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-translate --metrics-recording-only --no-first-run --safebrowsing-disable-auto-update --enable-automation --password-store=basic --use-mock-keychain --headless --hide-scrollbars --mute-audio about:blank --remote-debugging-port=51908 --user-data-dir=/Users/edenhikri/Library/Application Support/pyppeteer/.dev_profile/tmpi4lv6pb2

seems like you have too many request and then get blocked by tiktok server.
have you try using proxy?

I am not sure if this is the issue... sometimes it works and does all the accounts, sometimes it gets stuck on the error... @fastandslow007

First, try to debug:

..
TikTokApi(debug=True)
..

Then enable dumpio on launch:

<yourenv>/lib/python3.6/site-packages/pyppeteer/launcher.py:
..
 81         self.dumpio = options.get('dumpio', True)
..

Run your script and notice the error. In my case, I got this error:

...
Class initialized
<xx>/local-chromium/588429/chrome-linux/chrome: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
The following error occurred, but it was ignored.
'browser' object has no attribute 'timezone_name'
<xx>/.local/share/pyppeteer/local-chromium/588429/chrome-linux/chrome: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
...
[ERROR]   ERROR-2 'browser' object has no attribute 'verifyFp'
...

Try to fix missing libXss.so.1 by installing this (I use Ubuntu):

$ apt-get install libxss1

Then the problem is fixed.

Thanks.

I have tried this...

I first enabled debug mode

api = TikTokApi(debug=True)

then I went into /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyppeteer/launcher.py
and changed line 81:

self.dumpio = options.get('dumpio', True)

then I ran snowball.py (my script)

It ran everything properly until it got stuck and brought up the same error:

...
DevTools listening on ws://127.0.0.1:53029/devtools/browser/28433110-68c9-4304-875e-5494698a533d
[0916/130613.905933:INFO:CONSOLE(1)] "%c", source:  (1)
Traceback (most recent call last):
  File "snowball.py", line 22, in <module>
    tiktok = api.getUser(accounts, proxy=None)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 723, in getUser
    return self.getData(b, proxy=proxy)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 71, in getData
    query = {'verifyFp': b.verifyFp, 'did': b.did, '_signature': b.signature}
AttributeError: 'browser' object has no attribute 'verifyFp'

Is it okay if you share the full log from the start?

This is what happens when I run snowball.py (python3 snowball.py) with debug mode set to True and dumpio enabled on launch:

(as it is lengthy I have put it in this link for you to view)

https://pastr.io/view/tuOfEKsXxly

I'm really not sure what the issue could be...

I discovered the issue may have been with google-api-core interfering with requests.

I simple fixed it by:

pip3 uninstall requests

then:

pip3 uninstall google-api-core

finally:

pip3 install requests

Unfortunately, this did not actually fix the issue. It seemed to only have fixed the issue for a few hours... I am really not sure what is causing this issue. Can you please help me out @davidteather

I’ve got no clue what your issue is. You could try to make a VM for a fresh start. The .travis.yml file has specific setup commands

Those instructions are linux specific... are you able to provide Mac instructions? @davidteather

I am really unsure what the issue may be... I have tried installing a new virtual environment, running it with debug mode set to True and dumpio enabled on launch. Nothing seems to work. I would love to use this program however it does not work for me

@edenhikri might be an issue with your actual IP address might be blocked by TikTok. When I used heroku it didn't like how they had their IPs setup. When I had a dedicated IP on a AWS ec2 instance it worked. You might want to try making the requests over a proxy (most publically available free ones probably wont work)

@davidteather So I tried using a private proxy that I bought. It is based in United States and I ran the script in debug mode in a virtual environment with the proxy and I still got the same error: (I even tried running with dumpio set to True on launch and got the same error)

  File "pinpoint.py", line 164, in pullandsort
    description()
  File "pinpoint.py", line 80, in description
    tiktok = api.getUser(name, proxy=myproxy)
  File "/Users/edenhikri/Desktop/ANYMERCH/programming/pinpoint/venv/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 723, in getUser
    return self.getData(b, proxy=proxy)
  File "/Users/edenhikri/Desktop/ANYMERCH/programming/pinpoint/venv/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 71, in getData
    query = {'verifyFp': b.verifyFp, 'did': b.did, '_signature': b.signature}
AttributeError: 'browser' object has no attribute 'verifyFp'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "pinpoint.py", line 231, in <module>
    startup()
  File "pinpoint.py", line 227, in startup
    locate()
  File "pinpoint.py", line 49, in locate
    sort()
  File "pinpoint.py", line 71, in sort
    pullandsort()
  File "pinpoint.py", line 167, in pullandsort
    description()
  File "pinpoint.py", line 80, in description
    tiktok = api.getUser(name, proxy=myproxy)
  File "/Users/edenhikri/Desktop/ANYMERCH/programming/pinpoint/venv/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 723, in getUser
    return self.getData(b, proxy=proxy)
  File "/Users/edenhikri/Desktop/ANYMERCH/programming/pinpoint/venv/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 71, in getData
    query = {'verifyFp': b.verifyFp, 'did': b.did, '_signature': b.signature}
AttributeError: 'browser' object has no attribute 'verifyFp'

Is there anything else I can try? @davidteather

If this is still an issue for you, I had the same problem. I added the following and it resolved the issue with set_async:

from TikTokApi.browser import set_async
set_async()

Good luck, and let me know!

lo-fo commented

same issue here.

virtualenv -p python3.8 tiktok_api_test
cd tiktok_api_test
source bin/activate
pip install TikTokApi

I dump the example code into test.py

python test.py

here is what i get

[W:pyppeteer.chromium_downloader] start chromium download. Download may take a few minutes. [W:pyppeteer.chromium_downloader] start chromium download. Download may take a few minutes. Traceback (most recent call last): File "test.py", line 7, in <module> trending = api.trending(count=results) File "/private/tmp/tiktok_api_test/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 154, in trending res = self.getData(b, proxy=proxy) File "/private/tmp/tiktok_api_test/lib/python3.8/site-packages/TikTokApi/tiktok.py", line 72, in getData query = {'verifyFp': b.verifyFp, 'did': b.did, '_signature': b.signature} AttributeError: 'browser' object has no attribute 'verifyFp'

running chromedriver in the terminal outputs this

Starting ChromeDriver 85.0.4183.87 (cd6713ebf92fa1cacc0f1a598df280093af0c5d7-refs/branch-heads/4183@{#1689}) on port 9515 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully.

If this is still an issue for you, I had the same problem. I added the following and it resolved the issue with set_async:

from TikTokApi.browser import set_async
set_async()

Good luck, and let me know!

I had the same problem and this solved it.
Thanks!

i encountered the same issue.
simply running pyppeteer-install was the solution for me.

If this is still an issue for you, I had the same problem. I added the following and it resolved the issue with set_async:
from TikTokApi.browser import set_async
set_async()
Good luck, and let me know!

I had the same problem and this solved it.
Thanks!

Same issue and solved by this!

If this is still an issue for you, I had the same problem. I added the following and it resolved the issue with set_async:

from TikTokApi.browser import set_async
set_async()

Good luck, and let me know!

I have the same issue with "verifyFp" but after adding set_async() I just have anorher error:

Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/usr/lib/python3.6/asyncio/base_events.py", line 454, in run_until_complete
self.run_forever()
File "/usr/lib/python3.6/asyncio/base_events.py", line 408, in run_forever
raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running

If this is still an issue for you, I had the same problem. I added the following and it resolved the issue with set_async:
from TikTokApi.browser import set_async
set_async()
Good luck, and let me know!

I have the same issue with "verifyFp" but after adding set_async() I just have anorher error:

Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/usr/lib/python3.6/asyncio/base_events.py", line 454, in run_until_complete
self.run_forever()
File "/usr/lib/python3.6/asyncio/base_events.py", line 408, in run_forever
raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running

Same error here

I had the same issue after deploying it to my raspberry pi, whereas it is working perfectly in windows.
Looks like the issue is with the pyppeteer browser. Did not investigate it completely, but the below fixed the issue.

Fix

pass the below argument while creating TikTokApi() object
executablePath = '/usr/bin/chromium-browser'

Command to find the path - "whereis chromium-browser"

Alternative:
Or directly hardcode the browser path in site-packages/TikTokApi/browser.py (wouldn't recommend, but can give a try if the 1st doesn't work)
self.executablePath = '/usr/bin/chromium-browser'

Hopefully, this works in Linux as well.

I've tried all of your recommendations, but the problem remained unresolved
Here's the code with all libraries:
`from TikTokApi import TikTokApi
from TikTokApi.browser import set_async
set_async()
api = TikTokApi()

results = 10

trending = api.trending(count=results)

for tiktok in trending:
# Prints the text of the tiktok
print(tiktok['desc'])

print(len(trending))And here's some errors:[W:pyppeteer.chromium_downloader] start chromium download.
Download may take a few minutes.
Traceback (most recent call last):
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)

During handling of the above exception, another exception occurred:
`
How can I solve it on MacOS?

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]
The issue you are facing seem to be different than the one discussed in this thread. See this for possible solution for ssl issue.

Since I've migrated the API to playwright information here may be outdated for TikTokApi >= 3.7.0 if anyone has the same issues on 3.7.0 or greater please open a new issue.

What happens when you type the following command into your terminal

chromedriver

I was getting an error that TikTokApi didn't have an attribute (width). When I saw your post, it enlighted me. I didn't know I should had started chromedriver x)! Thanks, mate.